Flutter文件管理插件simple_file_manager的使用
Flutter文件管理插件simple_file_manager的使用

Simple File Manager
一个简单的文件管理器,可以以简单的方式预览文件夹和文件,并下载文件。
特性
- 列出文件夹和文件
- 预览文件
- 上传新文件
- 创建新文件夹
- 下载文件
- 复制文件URL
- 图片文件缩放
Demo

使用/示例
以下是使用 simple_file_manager
插件的基本示例:
import 'dart:convert';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:http_parser/http_parser.dart';
import 'package:simple_file_manager/simple_file_manager.dart';
import 'package:http/http.dart' as http;
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// 这个小部件是你的应用的根。
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Simple File Manager',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Simple File Manager'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
[@override](/user/override)
void initState() {
init();
super.initState();
}
init() async {
_myData = await getFilesData(null);
setState(() {});
}
List<FileModel>? _myData;
/// 获取文件数据
Future<List<FileModel>?> getFilesData(String? parentId) async {
var response = await http.get(
Uri.parse(
'yourBaseUrl.api/file/tree?parentId=${parentId ?? ''}&skip=0'
'&count=0'),
);
Map<String, dynamic> json = jsonDecode(response.body);
return List<FileModel>.from(json['data'].map((e) => FileModel.fromJson(e)));
}
Future<String> uploadFile(
String? folderId, Uint8List? pickedFile, String? pickedFileName) async {
var request = http.MultipartRequest(
"POST",
Uri.parse('yourBaseUrl.api/storage/folder/file/admin'));
request.files.add(http.MultipartFile.fromBytes(
'file',
pickedFile!,
filename: pickedFileName,
contentType: MediaType("image", pickedFileName!.split('.').last),
));
request.fields['name'] = pickedFileName;
request.headers["Content-Type"] = "image/jpg";
request.fields['path'] = 'img';
request.fields['type'] = 'File';
if (folderId != null) request.fields['parentId'] = folderId;
var response = await request.send();
var data = await response.stream.toBytes();
String dataString = utf8.decode(data);
var r = json.decode(dataString);
return r['data']['thumbnailUrl'];
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
title: Text(widget.title),
),
body: _myData != null
? SimpleFileManager(
filesList: _myData!,
uploadButtonText: 'Upload',
onUpload: (String? parentId, pickedFiles, pickedFileNames) async {
if (pickedFiles != null) {
List<String> urlList = [];
for (int x = 0; x < pickedFiles.length; x++) {
urlList.add(await uploadFile(
parentId, pickedFiles[x], pickedFileNames?[x]));
}
} else {
return null;
}
},
// onCreateFolderClicked: (String? parentID,String? folderName) {
// },
onBack: (String? value) async {
return await getFilesData(value);
},
onFolderClicked: (value) async {
return await getFilesData(value!.id);
},
// placeholderFromAssets: 'assets/images/placeholder.png',
)
: null,
);
}
}
更多关于Flutter文件管理插件simple_file_manager的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter文件管理插件simple_file_manager的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
simple_file_manager
是一个用于 Flutter 的文件管理插件,它可以帮助你在应用中浏览、创建、删除、复制、移动和重命名文件和文件夹。以下是如何使用 simple_file_manager
插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 simple_file_manager
插件的依赖:
dependencies:
flutter:
sdk: flutter
simple_file_manager: ^0.0.1 # 请检查最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 simple_file_manager
插件:
import 'package:simple_file_manager/simple_file_manager.dart';
3. 使用插件
3.1 初始化文件管理器
你可以通过 SimpleFileManager
类来管理文件。首先,你需要初始化文件管理器:
final fileManager = SimpleFileManager();
3.2 获取文件列表
你可以使用 getFiles
方法来获取指定目录下的文件列表:
List<FileSystemEntity> files = await fileManager.getFiles('/path/to/directory');
3.3 创建文件夹
你可以使用 createDirectory
方法来创建一个新文件夹:
await fileManager.createDirectory('/path/to/new_directory');
3.4 删除文件或文件夹
你可以使用 delete
方法来删除文件或文件夹:
await fileManager.delete('/path/to/file_or_directory');
3.5 复制文件或文件夹
你可以使用 copy
方法来复制文件或文件夹:
await fileManager.copy('/path/to/source', '/path/to/destination');
3.6 移动文件或文件夹
你可以使用 move
方法来移动文件或文件夹:
await fileManager.move('/path/to/source', '/path/to/destination');
3.7 重命名文件或文件夹
你可以使用 rename
方法来重命名文件或文件夹:
await fileManager.rename('/path/to/old_name', '/path/to/new_name');
4. 示例代码
以下是一个简单的示例,展示如何使用 simple_file_manager
插件来列出指定目录下的文件:
import 'package:flutter/material.dart';
import 'package:simple_file_manager/simple_file_manager.dart';
import 'dart:io';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: FileManagerExample(),
);
}
}
class FileManagerExample extends StatefulWidget {
[@override](/user/override)
_FileManagerExampleState createState() => _FileManagerExampleState();
}
class _FileManagerExampleState extends State<FileManagerExample> {
List<FileSystemEntity> files = [];
[@override](/user/override)
void initState() {
super.initState();
_loadFiles();
}
Future<void> _loadFiles() async {
final fileManager = SimpleFileManager();
final directory = '/storage/emulated/0/Download'; // 替换为你想浏览的目录
List<FileSystemEntity> fileList = await fileManager.getFiles(directory);
setState(() {
files = fileList;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('File Manager Example'),
),
body: ListView.builder(
itemCount: files.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(files[index].path.split('/').last),
subtitle: Text(files[index].path),
);
},
),
);
}
}