Je développe une application en flutter spécialement pour iOS (à ce stade) et je dois y ajouter des fichiers PDF. Le problème est que flutter n'a aucun moyen natif d'afficher les fichiers PDF (pour autant que j'ai fait des recherches).
De cette bande de roulement il semble qu'il ne devrait pas être trop difficile d'ajouter la prise en charge de PDF aux appareils iOS à l'aide du plug-in this . Cependant, je ne sais toujours pas comment l'intégrer exactement dans mon application Flutter.
Toute aide serait appréciée!
Lorsque j'implémentais la fonctionnalité pour PDF viewer, il n'y avait pas de plug-in PDF.
Cependant, assez drôle un ami au travail a découvert qu'il y avait déjà un PDF visualiseur implémenté pour Flutter ici , que nous avons fini par utiliser).
Remarque: Au moment de la rédaction de la question, 16.08, aucun plugin n'était encore disponible. Le mentionné a été créé le 30.08.
ajouter les dépendances dans le pubspec.yaml
pubspec.yaml
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
pdf_viewer_plugin: ^1.0.0+2
path_provider: ^1.6.1
http: ^0.12.0+4
main.Dart
import 'Dart:async';
import 'Dart:io';
import 'Dart:typed_data';
import 'package:flutter/material.Dart';
import 'package:pdf_viewer_plugin/pdf_viewer_plugin.Dart';
import 'package:path_provider/path_provider.Dart';
import 'package:http/http.Dart' as http;
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String path;
@override
initState() {
super.initState();
}
Future<String> get _localPath async {
final directory = await getApplicationDocumentsDirectory();
return directory.path;
}
Future<File> get _localFile async {
final path = await _localPath;
return File('$path/teste.pdf');
}
Future<File> writeCounter(Uint8List stream) async {
final file = await _localFile;
// Write the file
return file.writeAsBytes(stream);
}
Future<Uint8List> fetchPost() async {
final response = await http.get(
'https://expoforest.com.br/wp-content/uploads/2017/05/exemplo.pdf');
final responseJson = response.bodyBytes;
return responseJson;
}
loadPdf() async {
writeCounter(await fetchPost());
path = (await _localFile).path;
if (!mounted) return;
setState(() {});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Plugin example app'),
),
body: Center(
child: Column(
children: <Widget>[
if (path != null)
Container(
height: 300.0,
child: PdfViewer(
filePath: path,
),
)
else
Text("Pdf is not Loaded"),
RaisedButton(
child: Text("Load pdf"),
onPressed: loadPdf,
),
],
),
),
),
);
}
}