Red de conocimiento informático - Aprendizaje de programación - Código fuente del creador de páginas

Código fuente del creador de páginas

Agregue el componente flutter_pdf view:1.2.1.

La pantalla de clase pdf extiende el widget con estado {

Cadena final;

? Ruta final de la cadena;

? título de cadena final;

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

? _ pdfscreenstate createstate()= > _ pdf screenstate();

}

clase _ pdfscrenstateextiende el estado con WidgetsBindingObserver {

Final Completer_Controller =

Completo();

? int páginas = 0;

? intcurrentPage = 0;

? boolisReady = false

? StringerrorMessage = "";

? @portada

? Widgetbuild(contexto BuildContext){

Volver andamio(

appBar:AppBar(

elevación: 0,

principal: nuevo botón de icono (

Icono: Image.asset(

Utils.getImgPath('icon_back '),

Ancho: 18,

Alto: 36,

? onPressed: () {

pop();

},

),

Título central: Sí,

Título: Texto (

widget.title,

?Style:TextStyle(fontSize:17.0),

?),

?Text:Stack(

Niños:[

Posicionado(

altura:consulta de medios . de (contexto). tamaño . altura-(utils . getheightsize(80, contexto) *2),

?width:media query.of(context).size.width,

?Subproyecto:PDFView(

filePath:widget.path,

enableSwipe: verdadero,

deslizarHorizontal: verdadero,

espaciado automático: falso,

pageFling: verdadero,

pageSnap:Sí,

defaultPage:currentPage

fitPolicy: FitPolicy.

Ambos,

Prevención de navegación:

falso, //Si se establece en verdadero, los enlaces se procesan en flutter

onRender: (_pages) {

setState(() {

páginas = _ páginas

isReady = true

?});

},

onError:(error){

setState(() {

mensaje de error = error . tostring();

> }) ;

? print(error . tostring());

},

onPageError:(página, error){

setState(() {

mensaje de error = ' $ página:$ { error .tostring()} ';

});

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

},

onview creado:(controlador de vista pdf controlador de vista pdf){

_ controlador .complete(controlador de vista pdf);

},

onLinkHandler:(cadena uri) {

print(' ir a uri:$ uri ');

},

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

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

? setState(() {

currentPage = página

?});

},

? ),

? ),

? Posicionado (

Abajo: 0,

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

? ancho: consulta de medios. de (contexto). tamaño . ancho,

? niño: contenedor (

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

Decoración:BoxDecoration(

Color: color. Blanco,

?border: borde. todo(color:colores de la aplicación. tono Gary),

? boxShadow: [

//Referencia:/video/6443

Box Shadow (

Color:AppColors.shadeGary,

desplazamiento:Desplazamiento(0.0, 0.0),

Radio de desenfoque: 3.0,

Radio de difusión: 0.0),

],

),

Niños: pila(

Niños:[

fila(

mainAxisSize: MainAxisSize.min,

?Niños:[

Contenedor(),

Expandir(Niños:SizeBox()),

Contenedor(

Alto: 42,0,

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

?

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

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

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

Degradado: degradado lineal (

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

),

),

? child:TextButton(

Estilo:ButtonStyle(

color de superposición:materialstateproperty . all(colores . transparente),

?foreground color:materialstateproperty . resolver con(

(Estado){

if(Estados. Contiene(estado del material. Presionado)){

//Color al presionar

Return Colors.transparent

? }

//El estado predeterminado es gris

? Return Colors.transparent

},

? ),

),

Niños: texto(

traducciones globales . texto(" msg _ download ").

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

),

onPressed: () {

launchPdfURL(widget .URL) ;

},

),

),

? ],

),

? ],

),

? )),

? errorMessage.isEmpty

! isReady

centro(

niño:indicador de progresión circular(),

?)

:contenedor()

:center(

niño:Texto(mensaje de error),

?)

],

? ),

? //botón de acción flotante: futuro constructor(

//?Future:_controller.future,

//?Builder: (contexto, instantánea asíncrona){

// if (snapshot.hasData) {

// ?return botón de acción flotante extendido(

// label: Text("Ir a ${pages ~/ 2 } ",

// onPressed: () async {

// ?esperar instantánea . datos . configurar página(páginas ~/2);

/ / },

// ?);

// }

//

//Devolver contenedor();< / p>

//?},

// ),

);

? }

launchPdfURL(String url) {

Launch(URL);

? }

}