列出pdf时Flutter应用程序变得太慢

pokxtpni  于 2022-12-05  发布在  Flutter
关注(0)|答案(1)|浏览(154)

我列出不同的文件从设备存储与变化的扩展名我跟随此链接获取文件链接getting files from device

用于获取文件的函数

var files;

  Future <void> getFiles() async {
if (await Permission.storage.request().isGranted) {
  // Either the permission was already granted before or the user just granted it.
}
//asyn function to get list of files
List<StorageInfo> storageInfo = await PathProviderEx.getStorageInfo();
var root = storageInfo[0]
    .rootDir; //storageInfo[1] for SD card, geting the root directory
var fm = FileManager(root: Directory(root)); //
files = await fm.dirsTree(
    excludedPaths: ["/storage/emulated/0/Android"],
   //optional, to filter files, list only pdf files
);
setState(() {}); //update the UI
 }
@override
  void initState() {
getFiles(); //call getFiles() function on initial state.
super.initState();

 }

身体

body:files == null? Text("Searching Files"):
    ListView.builder(  //if file/folder list is grabbed, then show here
      itemCount: files?.length ?? 0,
      itemBuilder: (context, index) {
        return Card(
            child:ListTile(
              title: Text(files[index].path.split('/').last),
              //   trailing: Icon(Icons.play_arrow, color: 
             Colors.redAccent,),
              onTap: (){

                }
nbysray5

nbysray51#

使用此选项:

dependencies:
  syncfusion_flutter_pdfviewer: ^20.3.59

示例:

import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart';

void main() {
  runApp(MaterialApp(
    title: 'Syncfusion PDF Viewer Demo',
    home: HomePage(),
  ));
}

/// Represents Homepage for Navigation
class HomePage extends StatefulWidget {
  @override
  _HomePage createState() => _HomePage();
}

class _HomePage extends State<HomePage> {
  final GlobalKey<SfPdfViewerState> _pdfViewerKey = GlobalKey();

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Syncfusion Flutter PDF Viewer'),
        actions: <Widget>[
          IconButton(
            icon: const Icon(
              Icons.bookmark,
              color: Colors.white,
              semanticLabel: 'Bookmark',
            ),
            onPressed: () {
              _pdfViewerKey.currentState?.openBookmarkView();
            },
          ),
        ],
      ),
      body: SfPdfViewer.network(
        'https://cdn.syncfusion.com/content/PDFViewer/flutter-succinctly.pdf',
        key: _pdfViewerKey,
      ),
    );
  }
}

从本地存储:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

第2步:在创建SfPdfViewer小部件时提及PDF文件路径,如以下代码所示。

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: const Text('Syncfusion Flutter PDF Viewer'),
    ),
    body: SfPdfViewer.file(
      File('storage/emulated/0/Download/gis_succinctly.pdf'),
    ),
  );
}

相关问题