Skip to content

Commit 758d5d6

Browse files
committed
feat: switch to pdfrx library, clean up API, upgrade dependencies
1 parent 5f0872f commit 758d5d6

File tree

11 files changed

+83
-81
lines changed

11 files changed

+83
-81
lines changed

.vscode/launch.json

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
{
2+
// Use IntelliSense to learn about possible attributes.
3+
// Hover to view descriptions of existing attributes.
4+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5+
"version": "0.2.0",
6+
"configurations": [
7+
{
8+
"name": "enough_media",
9+
"request": "launch",
10+
"type": "dart",
11+
"program": "lib/main.dart"
12+
},
13+
{
14+
"name": "enough_media (profile mode)",
15+
"request": "launch",
16+
"type": "dart",
17+
"flutterMode": "profile",
18+
"program": "lib/main.dart"
19+
},
20+
{
21+
"name": "enough_media (release mode)",
22+
"request": "launch",
23+
"type": "dart",
24+
"flutterMode": "release",
25+
"program": "lib/main.dart"
26+
},
27+
{
28+
"name": "example",
29+
"cwd": "example",
30+
"request": "launch",
31+
"type": "dart",
32+
"program": "example/lib/main.dart"
33+
},
34+
{
35+
"name": "example (profile mode)",
36+
"cwd": "example",
37+
"request": "launch",
38+
"type": "dart",
39+
"flutterMode": "profile",
40+
"program": "example/lib/main.dart"
41+
},
42+
{
43+
"name": "example (release mode)",
44+
"cwd": "example",
45+
"request": "launch",
46+
"type": "dart",
47+
"flutterMode": "release",
48+
"program": "example/lib/main.dart"
49+
}
50+
]
51+
}

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## [3.0.0] - 2025-06-23
2+
* Ensure compatibility with Flutter 3.32
3+
* Switch to `pdfrx` package for PDF support
4+
15
## [2.3.1] - 2024-05-22
26
* Ensure compatibility with Flutter 3.22
37

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Add this dependency your pubspec.yaml file:
5858

5959
```
6060
dependencies:
61-
enough_media: ^2.2.0
61+
enough_media: ^3.0.0
6262
```
6363
The latest version or `enough_media` is [![enough_media version](https://img.shields.io/pub/v/enough_media.svg)](https://pub.dartlang.org/packages/enough_media).
6464

example/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ description: Example for enough_media usage.
33
homepage: https://github.com/enough-software/enough_media
44

55
environment:
6-
sdk: ">=2.18.0 <4.0.0"
7-
flutter: ">=3.0.0"
6+
sdk: ">=3.0.0 <4.0.0"
7+
flutter: ">=3.27.0"
88

99
dependencies:
1010
flutter:

lib/enough_media.dart

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
11
/// An opinionated but extensible collection of media widgets
22
library enough_media;
33

4-
export 'src/media_provider.dart';
5-
export 'src/interactive_media_widget.dart';
64
export 'src/interactive/interactive.dart';
7-
export 'src/preview_media_widget.dart';
5+
export 'src/interactive_media_widget.dart';
6+
export 'src/media_provider.dart';
87
export 'src/preview/preview.dart';
9-
10-
export 'package:pdfx/pdfx.dart';
11-
export 'package:chewie/chewie.dart';
12-
export 'package:chewie_audio/chewie_audio.dart'
13-
show ChewieAudio, ChewieAudioController;
8+
export 'src/preview_media_widget.dart';

lib/src/interactive/audio_interactive_media.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ import '../media_provider.dart';
99
class AudioInteractiveMedia extends StatefulWidget {
1010
final MediaProvider mediaProvider;
1111
AudioInteractiveMedia({
12-
Key? key,
12+
super.key,
1313
required this.mediaProvider,
14-
}) : super(key: key);
14+
});
1515

1616
@override
1717
_AudioInteractiveMediaState createState() => _AudioInteractiveMediaState();

lib/src/interactive/image_interactive_media.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import '../media_provider.dart';
66
/// Displays zoomable images
77
class ImageInteractiveMedia extends StatelessWidget {
88
final MediaProvider mediaProvider;
9-
const ImageInteractiveMedia({Key? key, required this.mediaProvider})
10-
: super(key: key);
9+
const ImageInteractiveMedia({super.key, required this.mediaProvider});
1110

1211
@override
1312
Widget build(BuildContext context) {
Lines changed: 9 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,24 @@
11
import 'package:flutter/material.dart';
2-
import 'package:pdfx/pdfx.dart';
2+
import 'package:pdfrx/pdfrx.dart';
33

44
import '../media_provider.dart';
55

66
/// Displays PDFs
7-
class PdfInteractiveMedia extends StatefulWidget {
7+
class PdfInteractiveMedia extends StatelessWidget {
88
final MediaProvider mediaProvider;
9-
PdfInteractiveMedia({Key? key, required this.mediaProvider})
10-
: super(key: key);
9+
PdfInteractiveMedia({super.key, required this.mediaProvider});
1110

1211
@override
13-
_PdfInteractiveMediaState createState() => _PdfInteractiveMediaState();
14-
}
15-
16-
class _PdfInteractiveMediaState extends State<PdfInteractiveMedia> {
17-
late PdfController pdfController;
18-
19-
@override
20-
void initState() {
21-
pdfController = PdfController(document: initDocument(widget.mediaProvider));
22-
super.initState();
23-
}
24-
25-
Future<PdfDocument> initDocument(final MediaProvider provider) {
12+
Widget build(BuildContext context) {
13+
final provider = mediaProvider;
2614
if (provider is MemoryMediaProvider) {
27-
return PdfDocument.openData(provider.data);
28-
// } else if (provider is UrlMediaProvider) {
29-
// provider.url
30-
// );
15+
return PdfViewer.data(provider.data, sourceName: provider.name);
16+
} else if (provider is UrlMediaProvider) {
17+
return PdfViewer.uri(Uri.parse(provider.url));
3118
} else if (provider is AssetMediaProvider) {
32-
return PdfDocument.openAsset(provider.assetName);
19+
return PdfViewer.asset(provider.assetName);
3320
} else {
3421
throw StateError('Unsupported media provider $provider');
3522
}
3623
}
37-
38-
@override
39-
Widget build(BuildContext context) {
40-
return PdfView(
41-
controller: pdfController,
42-
);
43-
}
44-
45-
// void onTextSelectionChanged(PdfTextSelectionChangedDetails details) {
46-
// if (details.selectedText == null && overlayEntry != null) {
47-
// overlayEntry.remove();
48-
// overlayEntry = null;
49-
// } else if (details.selectedText != null && overlayEntry == null) {
50-
// final OverlayState overlayState = Overlay.of(context);
51-
// overlayEntry = OverlayEntry(
52-
// builder: (context) => Positioned(
53-
// top: details.globalSelectedRegion.center.dy - 55,
54-
// left: details.globalSelectedRegion.bottomLeft.dx,
55-
// child: RaisedButton(
56-
// child: Text('Copy', style: TextStyle(fontSize: 17)),
57-
// onPressed: () {
58-
// Clipboard.setData(ClipboardData(text: details.selectedText));
59-
// pdfViewerController.clearSelection();
60-
// },
61-
// color: Colors.white,
62-
// elevation: 10,
63-
// ),
64-
// ),
65-
// );
66-
// overlayState.insert(overlayEntry);
67-
// }
68-
// }
6924
}

lib/src/interactive/text_interactive_media.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ import 'package:flutter/material.dart';
77
class TextInteractiveMedia extends StatelessWidget {
88
final MediaProvider mediaProvider;
99

10-
const TextInteractiveMedia({Key? key, required this.mediaProvider})
11-
: super(key: key);
10+
const TextInteractiveMedia({super.key, required this.mediaProvider});
1211

1312
@override
1413
Widget build(BuildContext context) {

lib/src/interactive/video_interactive_media.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ import '../media_provider.dart';
77

88
class VideoInteractiveMedia extends StatefulWidget {
99
final MediaProvider mediaProvider;
10-
VideoInteractiveMedia({Key? key, required this.mediaProvider})
11-
: super(key: key);
10+
VideoInteractiveMedia({super.key, required this.mediaProvider});
1211

1312
@override
1413
_VideoInteractiveMediaState createState() => _VideoInteractiveMediaState();

0 commit comments

Comments
 (0)