Red de conocimiento del abogados - Ley de patentes - Lectura de PDF de Flutter, puede mostrar el número de página y el código fuente

Lectura de PDF de Flutter, puede mostrar el número de página y el código fuente

Agregar flutter_pdfview: ^1.2.1 componente

clase PDFScreenextends StatefulWidget {

final Stringurl;

final Stringpath;

? Título de cadena final;

? PDFScreen({Clave clave, esta.url, esta.ruta, este.título}) :super(clave: clave);

? _PDFScreenStatecreateState() =>_PDFScreenState();

}

clase _PDFScreenStateextends Statewith WidgetsBindingObserver {

final Completer_controller =

Completer() ;

? intpages =0;

? intcurrentPage =0;

? boolisReady =false;

?

? @override

? Widgetbuild(contexto BuildContext) {

return Scaffold(

appBar:AppBar(

elevación: 0,

líder: nuevo IconButton(

icono:Image.asset(

Utils.getImgPath('icon_back'),

ancho:18,

alto:36,

),

? onPressed: () {

Navegador .of(context).pop();

? },

),

centerTitle:true,

title:Texto (

widget.title,

? estilo:TextStyle(fontSize:17.0),

),

),

? cuerpo:Pila(

hijos: [

Posicionado(

altura: MediaQuery.of(context).size.height - ( Utils.getHeightSize(80, contexto) *2),

ancho: MediaQuery.of(context).size.width,

hijo:PDFView(

<) p> filePath:widget.path,

enableSwipe:true,

swipeHorizontal:true,

autoSpacing:false,

pageFling:true,

pageSnap:true,

defaultPage:currentPage,

fitPolicy: FitPolicy.BOTH,

preventLinkNavigation:

false, // si se establece en verdadero, el enlace se maneja en flutter

onRender: (_pages) {

setState(() {

páginas = _páginas;

isReady =true;

? });

},

onError: (error) {

setState(() {

errorMessage = error.toString();

? }); p>

? print(error.toString());

},

onPageError: (página, error) {

setState( () {

errorMessage ='$página: ${error.toString()}';

});

print('$página) : $ {error.toString()}');

},

onViewCreated: (PDFViewController pdfViewController) {

_controller.complete(pdfViewController);

},

onLinkHandler: (String uri) {

print('goto uri: $uri');

},

onPageChanged: (int página, int total) {

print('cambio de página: $página/$total');

setState(() {

p>

página actual = página;

});

},

),

? ),

? Posicionado(

abajo:0,

? altura: Utils.getHeightSize(80, contexto),

? ancho:

MediaQuery.of(context).size.width,

? child:Container(

// padding: EdgeInsets.only(izquierda: 10.0, derecha: 10.0, arriba: 10.0, abajo: 10.0),

decoración:BoxDecoration(

color: Colors.white,

? border:Border.all(color: AppColors.shadeGary),

? boxShadow: [

//consulte :/video/6443

BoxShadow(

color: AppColors.shadeGary,

desplazamiento:Desplazamiento(0.0, 0.0),

blurRadius:3.0,

spreadRadius:0.0),

], p>

),

child:Stack(

niños: [

Row(

mainAxisSize: MainAxisSize. min,

? hijos: [

Contenedor(),

Expandido(niño:SizeBox()),

Contenedor(

altura:42.0,

? ancho: Utils.getWidthSize(90, contexto),

margen:EdgeInsets.only(derecha:20.0, abajo:5.0 ),

? decoración:BoxDecoration(//Línea de borde

borderRadius:BorderRadius.circular(21.0),? //Esquinas redondeadas

gradiente:LinearGradient(

colores: [Color(0xFF5FD27A), Color(0xFF3FAF6F)],

),

),

? TextButton(

estilo:ButtonStyle(

overlayColor: MaterialStateProperty.all(Colors.transparent),

? primer plano

Color: MaterialStateProperty.resolveWith(

(estados) {

if (states.contains(MaterialState.pressed)) {

//Color al presionar

return Colors.transparent;

? }

//El estado predeterminado usa gris

return Colors.transparent;

},

? ),

),

niño:Texto(

globalTranslations.text("msg_download") ,

? estilo:TextStyle(color: Colors.white),

),

onPressed: () {

launchPdfURL ( widget.url);

},

),

),

],

),

? ],

),

? )),

errorMessage.isEmpty

!isReady

Centro(

niño:CircularProgressIndicator(),

? )

:Container()

:Centro(

niño:Texto(mensaje de error),

? )

],

),

? // flotanteActionButton: FutureBuilder(

///? futuro: _controller.future,

///? constructor: (contexto, instantánea de AsyncSnapshot) {

// if (snapshot.hasData) {

// ? return FlotanteActionButton.extended(

// etiqueta: Texto("Ir a ${pages ~/ 2} " ),

// onPressed: () async {

// ?

.setPage(páginas ~/ 2);

// },

// );

// }

/ /

// devolver contenedor();

///? },

// ),

);

? }

lanzarPdfURL(String url) {

lanzar(url);

}

}