Saltar al contenido

Cómo hacer una captura de pantalla en el ejemplo de código de la aplicación Flutter

Ejemplo: captura de widgets en flutter

import'package:flutter/material.dart';import'dart:async';import'dart:typed_data';import'dart:ui'as ui;import'package:flutter/material.dart';import'package:flutter/rendering.dart';import'package:flutter/services.dart';import'package:path_provider/path_provider.dart';import'dart:io';voidmain()=>runApp(newMyApp());classMyAppextendsStatelessWidget// This widget is the root of your application.
  Widget build(BuildContext context)returnnewMaterialApp(
      title:'Flutter Demo',
      theme:newThemeData(
        primarySwatch: Colors.blue,),
      home:newMyHomePage(title:'Flutter Demo Home Page'),);classMyHomePageextendsStatefulWidgetMyHomePage(Key key,this.title):super(key: key);final String title;
  _MyHomePageState createState()=>new_MyHomePageState();class_MyHomePageStateextendsState<MyHomePage>static GlobalKey previewContainer =newGlobalKey();
  int _counter =0;void_incrementCounter()setState(()// This call to setState tells the Flutter framework that something has// changed in this State, which causes it to rerun the build method below// so that the display can reflect the updated values. If we changed// _counter without calling setState(), then the build method would not be// called again, and so nothing would appear to happen.
      _counter++;);
  Widget build(BuildContext context)returnRepaintBoundary(
        key: previewContainer,
      child:newScaffold(
      appBar:newAppBar(

        title:newText(widget.title),),
      body:newCenter(
        child:newColumn(

          mainAxisAlignment: MainAxisAlignment.center,
          children:<Widget>[newText('You have pushed the button this many times:',),newText('$_counter',
              style: Theme.of(context).textTheme.display1,),newRaisedButton(
                onPressed: takeScreenShot,
              child:constText('Take a Screenshot'),),],),),
      floatingActionButton:newFloatingActionButton(
        onPressed: _incrementCounter,
        tooltip:'Increment',
        child:newIcon(Icons.add),),// This trailing comma makes auto-formatting nicer for build methods.));takeScreenShot()async
    RenderRepaintBoundary boundary = previewContainer.currentContext.findRenderObject();
    ui.Image image =await boundary.toImage();final directory =(awaitgetApplicationDocumentsDirectory()).path;
    ByteData byteData =await image.toByteData(format: ui.ImageByteFormat.png);
    Uint8List pngBytes = byteData.buffer.asUint8List();print(pngBytes);
    File imgFile =newFile('$directory/screenshot.png');
    imgFile.writeAsBytes(pngBytes);

Puedes añadir valor a nuestra información dando tu experiencia en los informes.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *