Colección de citas famosas - Slogan de motivación - 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;

? final Stringtitle;

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

}

clase _PDFScreenStateextends Statewith WidgetsBindingObserver {

final Completer_controller =

Completer( );

? intpages =0;

? intcurrentPage =0;

? ;

? @override

? Widgetbuild(contexto BuildContext) {

return Scaffold(

appBar:AppBar(

elevación: 0,

interlineado: nuevo IconButton(

icono: Image.asset(

Utils.getImgPath('icon_back'), p>

ancho: 18,

alto: 36,

),

? p> Navigator.of(context).pop();

?,

),

centerTitle: verdadero,

título: Texto(

widget.title,

? estilo: TextStyle(fontSize: 17.0),

),

? ,

? cuerpo: Pila(

niños: [

Posicionado(

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

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

hijo: PDFView(

rutaarchivo:widg

et.path,

enableSwipe: verdadero,

swipeHorizontal: verdadero,

autoSpacing: falso,

pageFling: verdadero,

p>

pageSnap: true,

defaultPage: currentPage,

fitPolicy: FitPolicy.BOTH,

preventLinkNavigation:

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

onRender: (_pages) {

setState(() {

páginas = _páginas;

está listo =true;

}

},

onError: (error) {

setState(() {

errorMessage = error.toString();

? });

print(error.toString(? ));

p>

},

onPageError: (página, error) {

setState(() {

errorMessage = '$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ágina actual = página;

? });

},

,

? abajo: 0,

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

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

? hijo: Container(

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

decoración: BoxDecoration(

color: Colors.white,

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

boxShadow: [

> //consulte:/video/6443

BoxShadow(

color: AppColors.shadeGary,

desplazamiento: Desplazamiento(0.0, 0.0), p>

blurRadius: 3.0,

spreadRadius: 0.0),

],

),

hijo : Pila (

hijos: [

Fila(

mainAxisSize: MainAxisSize.min,

? hijos: [

Contenedor(),

Expandido(niño: SizedBox()),

Contenedor(

altura: 42.0,

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

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

decoración: BoxDecoration(//border) line

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

gradiente: LinearGradie

nt(

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

),

),

? niño: TextButton(

estilo: ButtonStyle(

overlayColor: MaterialStateProperty.all(Colors.transparent),

? foregroundColor: MaterialStateProperty.resolveWith(

(estados) {

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

//Color al presionar

return Colores .transparent ;

? }

// El estado predeterminado usa gris

?

? ),

),

hijo: Texto(

globalTranslations.text("msg_download"),

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

),

onPressed: () {

launchPdfURL(widget.url);

},

),

),

],

),

? ],

),

? )),

? errorMessage.isEmpty

!isReady

Centro(

hijo: CircularProgressIndicator(),

? )

: Contenedor()

: Centro(

niño: Texto(mensaje de error),

? )

],

? ),

? // flotanteActionButton: FutureBuilder(

///? futuro: _controller.future ,

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

// if (snapshot.hasData) {

// devolver FloatingActionButton.extended (

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

// onPressed: () async {

/ /? espera instantánea.data.setPage(páginas ~/ 2);

// },

//

// }

//

// devolver contenedor();

///? },

// ),

);

}

lanzarPdfURL(String url) {

lanzar(url);

}