Flutter自动丢弃管理插件quanht_auto_dropper的使用
Flutter自动丢弃管理插件quanht_auto_dropper的使用
一个轻量级库,通过根据可用空间智能调整下拉位置,确保下拉框完全可见,可以打开在触发按钮上方或下方。
特性 v0.0.1
AppAutoDropdown
小部件支持数据列表以处理空间不足的情况。parentScrollController
是屏幕滚动控制器,当屏幕滚动时会自动关闭下拉框。DropItem
类已取代DropListWidget
类。onSeleted
已被替换为onSelected
。当在下拉框中选择或取消选择时,onSelected
回调会被调用。
入门指南
TODO: 列出先决条件并提供或指向如何开始使用该包的信息。
预览
||
|
使用
简单使用
如果你希望在滚动时控制自动关闭下拉框,则需要在小部件中添加 parentScrollController
。parentScrollController
是屏幕的滚动控制器。
TODO: 请检查 /example
文件夹。
下拉项列表需要转换成 DropItem
类型,包括 name
和 id
属性,这两个属性是必需的。此外,DropItem
允许添加前缀标志到下拉框中。
final DropItem listDrop = DropItem(name: '', id: -1);
AppAutoDropdown(
items: <DropItem>[],
label: '$Label',
hintText: '$Hint text',
parentScrollController: scrollController,
onSelected: (output){},
),
完整示例
以下是一个完整的示例代码,展示了如何使用 quanht_auto_dropper
插件:
// ignore_for_file: avoid_print, constant_identifier_names
import 'package:flutter/material.dart';
import 'package:quanht_auto_dropper/models/drop_item.dart';
import 'package:quanht_auto_dropper/quanht_auto_dropper.dart';
enum Format { EXCEL, PDF, UNKNOWN }
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Auto Dropper'),
);
}
}
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> {
Format _formatSelect = Format.UNKNOWN;
ScrollController scrollController = ScrollController();
final _itemsFormat =
Format.values.where((v) => v != Format.UNKNOWN).map((element) {
final index = Format.values.indexOf(element);
return DropItem(id: index, name: element.name, index: index, data: element);
}).toList();
void _selectDropdown(DropItem item) {
_formatSelect = item.data;
setState(() {});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.amber[100],
title: Text(widget.title),
),
backgroundColor: Colors.amber,
body: Column(
children: [
const SizedBox(height: 20),
Expanded(
child: SingleChildScrollView(
controller: scrollController,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You just select :',
),
Text(
_formatSelect.name,
style: Theme.of(context).textTheme.headlineMedium,
),
AppAutoDropdown(
items: _itemsFormat,
label: 'Label',
hintText: 'Hint text',
parentScrollController: scrollController,
onSelected: _selectDropdown,
),
const SizedBox(height: 500.0),
AppAutoDropdown(
items: _itemsFormat,
label: 'Label',
hintText: 'Hint text',
parentScrollController: scrollController,
onSelected: _selectDropdown,
),
],
),
),
),
),
],
),
);
}
}
更多关于Flutter自动丢弃管理插件quanht_auto_dropper的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter自动丢弃管理插件quanht_auto_dropper的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
quanht_auto_dropper
是一个 Flutter 插件,旨在帮助开发者自动管理资源,避免内存泄漏或资源未释放的情况。该插件通过自动丢弃不再使用的资源来简化资源管理。
安装
首先,你需要在 pubspec.yaml
文件中添加依赖:
dependencies:
quanht_auto_dropper: ^latest_version
然后运行 flutter pub get
来安装插件。
基本用法
quanht_auto_dropper
提供了一个 AutoDropper
类,你可以用它来管理需要自动丢弃的资源。
1. 创建 AutoDropper
实例
import 'package:quanht_auto_dropper/quanht_auto_dropper.dart';
final autoDropper = AutoDropper();
2. 添加需要自动丢弃的资源
你可以使用 add
方法将资源添加到 AutoDropper
中。这些资源可以是任何对象,比如数据库连接、文件句柄、网络请求等。
final resource = MyResource();
autoDropper.add(resource);
3. 自动丢弃资源
AutoDropper
会在适当的时候自动丢弃资源。例如,当 AutoDropper
对象被垃圾回收时,它会自动调用资源的 dispose
或 close
方法(如果资源实现了这些方法)。
class MyResource {
void dispose() {
// 释放资源的代码
}
}
4. 手动丢弃资源
你也可以手动调用 drop
方法来丢弃资源:
autoDropper.drop(resource);
5. 丢弃所有资源
如果你想一次性丢弃所有资源,可以使用 dropAll
方法:
autoDropper.dropAll();
高级用法
自定义丢弃逻辑
如果资源没有实现 dispose
或 close
方法,你可以通过传入一个回调函数来自定义丢弃逻辑:
autoDropper.add(resource, onDrop: () {
// 自定义丢弃逻辑
});
绑定到 Widget 生命周期
你可以将 AutoDropper
绑定到 Flutter Widget 的生命周期中,以确保在 Widget 被销毁时自动丢弃资源:
class MyWidget extends StatefulWidget {
[@override](/user/override)
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
final autoDropper = AutoDropper();
[@override](/user/override)
void dispose() {
autoDropper.dropAll();
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
final resource = MyResource();
autoDropper.add(resource);
return Container(
// Widget 内容
);
}
}