Flutter日期选择器插件full_picker的使用
Flutter日期选择器插件full_picker的使用
插件简介
Full Picker
是一个Flutter包,旨在帮助您以不同的模式选择文件。该插件支持多种功能,如多文件选择、视频压缩、图片裁剪、自定义相机、为文件设置自定义名称、语音记录等,并且兼容Material 1, 2, 3设计规范。
主要特性
- 多文件选择
- 视频压缩(仅支持Android和iOS)
- 图片裁剪(仅支持Android和iOS)
- 自定义相机
- 文件的自定义名称
- 语音记录
- URL选择
- 支持Material 1,2,3
使用示例
以下是一个简单的FullPicker
使用示例:
import 'package:flutter/material.dart';
import 'package:full_picker/full_picker.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) => MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
useMaterial3: true,
brightness: Brightness.light,
colorScheme: ThemeData().colorScheme.copyWith(primary: Colors.black),
),
home: const FilePickerTest(),
);
}
class FilePickerTest extends StatefulWidget {
const FilePickerTest({super.key});
@override
State<FilePickerTest> createState() => _ExonFilePicker();
}
class _ExonFilePicker extends State<FilePickerTest> {
String info = 'Not Selected !';
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(title: const Text('Full Picker Example')),
body: Column(
children: <Widget>[
ElevatedButton(
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all<Color>(Colors.black),
),
child: const Padding(
padding: EdgeInsets.all(8),
child: Text(
'Open Full Picker',
style: TextStyle(fontSize: 25, color: Colors.white),
),
),
onPressed: () {
FullPicker(
context: context,
prefixName: 'test',
file: true,
voiceRecorder: true,
video: true,
videoCamera: true,
imageCamera: true,
imageCropper: true,
multiFile: true,
url: true,
onError: (int value) {
if (kDebugMode) {
print(' ---- onError ----=$value');
}
},
onSelected: (FullPickerOutput value) async {
if (kDebugMode) {
print(' ---- onSelected ----');
}
if (value.fileType != FullPickerType.url) {
info = '';
for (int i = 0; i < value.name.length; i++) {
final String fileSizeInt = fileSize(
await value.xFile[i]!.readAsBytes(),
);
info =
'${info}File Type :${value.fileType}\nPath File :${value.name[i]}\nSize File :$fileSizeInt\n--------\n';
}
} else {
info = value.data as String;
}
setState(() {});
},
);
},
),
Expanded(
child: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(2),
child: Row(
children: <Widget>[
Expanded(
child: Text(
'Output :\n\n$info',
style: const TextStyle(fontSize: 18),
),
),
],
),
),
),
),
],
),
);
}
配置说明
Android配置
-
API < 29
在
AndroidManifest.xml
中添加权限:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/>
-
API >= 29
在
AndroidManifest.xml
中添加权限:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
并在
Project-level build.gradle
中添加仓库:allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
在
Module-level build.gradle
中添加依赖:implementation 'com.github.AbedElazizShe:LightCompressor:1.0.0'
iOS配置
-
在
Info.plist
文件中添加:<key>NSPhotoLibraryUsageDescription</key> <string>${PRODUCT_NAME} library Usage</string>
-
如果需要语音记录功能,在
Info.plist
中添加:<key>NSMicrophoneUsageDescription</key> <string>We need to access to the microphone to record audio file</string>
macOS配置
-
在
Info.plist
文件中添加:<key>NSMicrophoneUsageDescription</key> <string>We need to access to the microphone to record audio file</string>
多语言支持
Full Picker
支持多语言定制化。例如:
FullPickerLanguage language = FullPickerLanguage.copy(
camera: S.current.camera,
selectFile: S.current.selectFile,
file: S.current.file,
voiceRecorder: S.current.voiceRecorder,
url: S.current.url,
enterURL: S.current.enterURL,
cancel: S.current.cancel,
ok: S.current.ok,
gallery: S.current.gallery,
cropper: S.current.cropper,
onCompressing: S.current.onCompressing,
tapForPhotoHoldForVideo: S.current.tapForPhotoHoldForVideo,
cameraNotFound: S.current.cameraNotFound,
noVoiceRecorded: S.current.noVoiceRecorded,
denyAccessPermission: S.current.denyAccessPermission);
FullPicker(
...
language: language,
...
);
其中 S
是来自 intl Package 的国际化工具。
以上是关于full_picker
插件的基本介绍和使用方法。如果您有任何问题或需要进一步的帮助,请随时提问!
更多关于Flutter日期选择器插件full_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter日期选择器插件full_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用full_picker
日期选择器插件的示例代码。这个插件允许你选择日期和时间。请确保你已经将full_picker
添加到你的pubspec.yaml
文件中:
dependencies:
flutter:
sdk: flutter
full_picker: ^最新版本号 # 请替换为实际的最新版本号
然后,运行flutter pub get
来安装依赖。
接下来是一个完整的示例代码,展示如何在Flutter应用中使用full_picker
:
import 'package:flutter/material.dart';
import 'package:full_picker/full_picker.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Full Picker Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
DateTime? selectedDateTime;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Full Picker Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
selectedDateTime == null
? 'No date selected'
: 'Selected Date: ${selectedDateTime!.toLocal()}',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
_showDatePicker(context);
},
child: Text('Select Date and Time'),
),
],
),
),
);
}
Future<void> _showDatePicker(BuildContext context) async {
final DateTime? picked = await showFullPicker(
context: context,
initialDate: selectedDateTime ?? DateTime.now(),
firstDate: DateTime(2000),
lastDate: DateTime(2101),
locale: Localizations.localeOf(context),
);
if (picked != null && picked != selectedDateTime) {
setState(() {
selectedDateTime = picked;
});
}
}
}
解释
-
依赖安装:确保在
pubspec.yaml
文件中添加了full_picker
依赖,并运行flutter pub get
。 -
主应用结构:
MyApp
:MaterialApp的根组件。MyHomePage
:主页面,包含状态管理。
-
状态管理:
_MyHomePageState
类中包含一个DateTime? selectedDateTime
变量,用于存储用户选择的日期和时间。
-
UI组件:
AppBar
:应用栏,显示标题。Column
:包含文本和按钮的列。Text
:显示当前选择的日期和时间,或者提示用户未选择日期。ElevatedButton
:按钮,点击后显示日期选择器。
-
日期选择器:
_showDatePicker
方法使用showFullPicker
函数显示日期和时间选择器。- 选择完成后,使用
setState
更新UI,显示新的日期和时间。
这个示例代码展示了如何使用full_picker
插件在Flutter应用中实现日期和时间的选择功能。你可以根据需要进一步自定义和扩展这个示例。