feat(route): search opens PDFs in pen editor too

The search-result document jump still opened the OLD PdfAnnotatorScreen,
the last live entry to it. Route it to PenEditorScreen instead, and add
an initialPage param to the editor so the jump lands on the hit's page
(clamped to the document range once it loads).

With this, PenEditorScreen is the ONLY reachable PDF surface; the old
annotator is now dead code (no remaining references).

flutter analyze: 0 issues. Full suite: 258/258.
This commit is contained in:
2026-06-23 10:04:38 +08:00
parent a7d71e7cfd
commit 96594fbe1b
2 changed files with 18 additions and 4 deletions

View File

@@ -41,10 +41,18 @@ String _documentIdFromPath(String path) {
} }
class PenEditorScreen extends StatefulWidget { class PenEditorScreen extends StatefulWidget {
const PenEditorScreen({super.key, required this.pdfPath}); const PenEditorScreen({
super.key,
required this.pdfPath,
this.initialPage = 0,
});
final String pdfPath; final String pdfPath;
/// 0-based page to open on (e.g. a search-result jump). Clamped to the
/// document's page range once it loads.
final int initialPage;
@override @override
State<PenEditorScreen> createState() => _PenEditorScreenState(); State<PenEditorScreen> createState() => _PenEditorScreenState();
} }
@@ -212,7 +220,13 @@ class _PenEditorScreenState extends State<PenEditorScreen> {
doc.dispose(); doc.dispose();
return; return;
} }
setState(() => _document = doc); setState(() {
_document = doc;
// Honor a requested initial page (search-result jump), clamped.
if (doc.pages.isNotEmpty) {
_pageIndex = widget.initialPage.clamp(0, doc.pages.length - 1);
}
});
} catch (e) { } catch (e) {
if (mounted) setState(() => _openError = e); if (mounted) setState(() => _openError = e);
} }

View File

@@ -3,11 +3,11 @@ import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../editor/canvas/pen_editor_screen.dart';
import '../l10n/app_localizations.dart'; import '../l10n/app_localizations.dart';
import '../models/note.dart'; import '../models/note.dart';
import '../providers/search_provider.dart'; import '../providers/search_provider.dart';
import 'note_editor_screen.dart'; import 'note_editor_screen.dart';
import 'pdf_annotator_screen.dart';
class SearchScreen extends ConsumerStatefulWidget { class SearchScreen extends ConsumerStatefulWidget {
const SearchScreen({super.key}); const SearchScreen({super.key});
@@ -222,7 +222,7 @@ class _DocumentSearchResultTile extends StatelessWidget {
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( MaterialPageRoute(
builder: (_) => builder: (_) =>
PdfAnnotatorScreen(filePath: filePath, initialPage: pageNumber), PenEditorScreen(pdfPath: filePath, initialPage: pageNumber),
), ),
); );
}, },