代码优化2

This commit is contained in:
DelLevin-Home
2026-06-27 19:20:03 +08:00
parent bcff4f6c01
commit a1fe0a23ef
31 changed files with 285 additions and 162 deletions

View File

@@ -53,7 +53,6 @@ class BookListItem extends StatelessWidget {
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4),
border: Border.all(color: colors.outline, width: 0.5),
),
clipBehavior: Clip.antiAlias,
child: FadeInLocalImage(

View File

@@ -28,13 +28,13 @@ class CustomBottomNavBar extends StatelessWidget {
borderRadius: BorderRadius.circular(28),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(isDark ? 0.3 : 0.08),
color: Colors.black.withValues(alpha: isDark ? 0.3 : 0.08),
blurRadius: 20,
offset: const Offset(0, 4),
spreadRadius: 0,
),
BoxShadow(
color: Colors.black.withOpacity(isDark ? 0.15 : 0.04),
color: Colors.black.withValues(alpha: isDark ? 0.15 : 0.04),
blurRadius: 8,
offset: const Offset(0, 2),
spreadRadius: -2,
@@ -156,6 +156,7 @@ class CustomBottomNavBar extends StatelessWidget {
void _showAddDialog(BuildContext context, AppProvider provider) {
final colors = Theme.of(context).colorScheme;
final outerContext = context;
showModalBottomSheet(
context: context,
backgroundColor: colors.surface,
@@ -209,7 +210,7 @@ class CustomBottomNavBar extends StatelessWidget {
};
final currentStatus = statusMap[provider.movieStatusIndex] ?? 'want_to_watch';
Navigator.pushNamed(
context,
outerContext,
'/movie-form',
arguments: {'initialStatus': currentStatus},
);
@@ -229,7 +230,7 @@ class CustomBottomNavBar extends StatelessWidget {
};
final currentStatus = statusMap[provider.bookStatusIndex] ?? 'want_to_read';
Navigator.pushNamed(
context,
outerContext,
'/book-form',
arguments: {'initialStatus': currentStatus},
);
@@ -242,7 +243,7 @@ class CustomBottomNavBar extends StatelessWidget {
subtitle: '记录你的想法和笔记',
onTap: () {
Navigator.pop(context);
Navigator.pushNamed(context, '/note-form');
Navigator.pushNamed(outerContext, '/note-form');
},
),
],

View File

@@ -53,7 +53,6 @@ class MovieListItem extends StatelessWidget {
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
border: Border.all(color: colors.outline, width: 0.5),
),
clipBehavior: Clip.antiAlias,
child: FadeInLocalImage(

View File

@@ -39,7 +39,6 @@ class _NoteListItemContent extends StatelessWidget {
decoration: BoxDecoration(
color: colors.surfaceContainerHigh,
borderRadius: BorderRadius.circular(8),
border: Border.all(color: colors.outlineVariant, width: 0.5),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -61,7 +60,6 @@ class _NoteListItemContent extends StatelessWidget {
decoration: BoxDecoration(
color: colors.surface,
borderRadius: BorderRadius.circular(3),
border: Border.all(color: colors.outlineVariant, width: 0.5),
),
child: Text(
'MD',
@@ -157,7 +155,6 @@ class _NoteListItemContent extends StatelessWidget {
decoration: BoxDecoration(
color: colors.surface,
borderRadius: BorderRadius.circular(4),
border: Border.all(color: colors.outlineVariant, width: 0.5),
),
child: Text(
tag,

View File

@@ -56,6 +56,19 @@ class _NotePlusEditorState extends State<NotePlusEditor> {
});
}
/// 清理已删除 block 对应的控制器和焦点节点
void _cleanupStaleEntries(List<NoteBlock> currentBlocks) {
final currentIds = currentBlocks.map((b) => b.id).toSet();
final staleIds = _controllers.keys.where((id) => !currentIds.contains(id)).toList();
for (final id in staleIds) {
_controllers.remove(id)?.dispose();
}
final staleFocusIds = _focusNodes.keys.where((id) => !currentIds.contains(id)).toList();
for (final id in staleFocusIds) {
_focusNodes.remove(id)?.dispose();
}
}
void _onControllerChanged(NoteBlock block) {
final provider = context.read<NotePlusProvider>();
final idx = provider.blocks.indexWhere((b) => b.id == block.id);
@@ -230,6 +243,9 @@ class _NotePlusEditorState extends State<NotePlusEditor> {
builder: (context, provider, _) {
final blocks = provider.blocks;
// 清理已删除 block 对应的控制器和焦点节点,防止内存泄漏
_cleanupStaleEntries(blocks);
return ListView.builder(
controller: _scrollController,
itemCount: blocks.length,