Flutter动画提示输入框插件animated_custom_hint_textfield的使用
Flutter动画提示输入框插件 animated_custom_hint_textfield
的使用
简介
custom_animated_hint_textfield
是一个增强文本输入框的Flutter包,通过动态且视觉效果良好的动画来提升用户体验。你可以创建如循环滚动、滑动、缩放、淡入淡出等多种动画效果,并根据应用需求进行自定义设计和行为。
特性
- 动画提示文本:轻松添加动态动画提示到文本字段。
- 多种动画类型:包括循环滚动、滑动、缩放、淡入淡出等动画效果。
- 可定制的设计:可以自定义提示文本样式、动画时长等属性。
- 静态和动画提示:支持静态提示文本和动画提示文本切换。
- 跨平台兼容性:完全支持iOS、Android和Web平台。
安装
在 pubspec.yaml
文件中添加依赖:
dependencies:
custom_animated_hint_textfield: ^latest_version
然后运行 flutter pub get
来获取该包,并在 Dart 文件中导入:
import 'package:custom_animated_hint_textfield/custom_animated_hint_textfield.dart';
使用示例
示例1:CircularAnimatedHintTextField
这是一个带有动画提示的文本输入框组件示例:
CircularAnimatedHintTextField(
prefixIcon: Icon(Icons.search_off_rounded, color: Colors.purple),
suffixIcon: Icon(Icons.access_time_filled, color: Colors.purple),
staticHintText: "Search food...",
staticHintTextStyle: TextStyle(color: Colors.grey, fontSize: 14),
hints: [
"Burger Delights 🍔",
"Pizza Heaven 🍕",
"Sweet Treats 🍰",
"Noodles Galore 🍜",
"Taco Time 🌯",
"Fries Galore 🍟",
],
animatedHintTextStyle: TextStyle(fontSize: 14, color: Colors.black, fontWeight: FontWeight.bold),
)
如果你不想使用静态提示文本,可以省略 staticHintText
和 staticHintTextStyle
属性,只显示动画提示文本。
示例2:AnimatedHintTextField
动画类型选择
hintAnimationType: HintAnimationType.fade,
hintAnimationType: HintAnimationType.slide,
hintAnimationType: HintAnimationType.scale,
hintAnimationType: HintAnimationType.slideFromTop,
hintAnimationType: HintAnimationType.slideFromBottom,
hintAnimationType: HintAnimationType.topToBottom,
hintAnimationType: HintAnimationType.bottomToTop,
以下是带有静态文本和动画提示的 AnimatedHintTextField
组件示例:
AnimatedHintTextField(
animateHintText: false,
staticHintText: "Search... ",
staticHintTextStyle: const TextStyle(fontSize: 14, color: Colors.grey),
hints: const [
'Quick Search 💡',
'Explore More 🌍',
'Find Your Favorite 🔍',
],
fieldBackgroundColor: Colors.grey[200],
animatedHintTextStyle: const TextStyle(fontSize: 16, color: Colors.black),
hintSwitchDuration: const Duration(seconds: 2),
hintAnimationType: HintAnimationType.fade,
)
完整的示例Demo
以下是一个完整的示例代码,展示了如何使用 CircularAnimatedHintTextField
和 AnimatedHintTextField
:
import 'package:flutter/material.dart';
import 'package:custom_animated_hint_textfield/custom_animated_hint_textfield.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Custom Animated Hint TextField',
theme: ThemeData(
primarySwatch: Colors.purple,
scaffoldBackgroundColor: Colors.white,
),
home: const HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
appBar: AppBar(
backgroundColor: Colors.deepPurple,
title: const Text(
'Custom Animated Hint TextField✨',
style: TextStyle(color: Colors.white, fontSize: 18),
),
),
body: GestureDetector(
onTap: () {
FocusManager.instance.primaryFocus?.unfocus();
},
child: Padding(
padding: const EdgeInsets.all(16.0),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(height: 24),
// Cyclic Scrolling Example
const Text(
" ◆ Cyclic Scrolling Animation",
style: TextStyle(
fontSize: 15,
color: Colors.purple,
fontWeight: FontWeight.bold),
),
const CircularAnimatedHintTextField(
staticHintText: "Search food...",
staticHintTextStyle:
TextStyle(color: Colors.grey, fontSize: 14),
hints: [
"Sizzling Steaks 🥩",
"Pasta Paradise 🍝",
"Dessert Dreams 🍨",
"Sushi Spot 🍣",
"Wrap Wonders 🌯",
"Beverage Bliss 🥤",
],
animatedHintTextStyle: TextStyle(
fontSize: 14,
color: Colors.black,
fontWeight: FontWeight.bold),
),
const SizedBox(height: 14),
// Slide Animation Example
const Text(
" ◆ Slide Animation",
style: TextStyle(
fontSize: 15,
color: Colors.deepOrange,
fontWeight: FontWeight.bold),
),
AnimatedHintTextField(
prefixIcon: const Text("🫠"),
fieldBorder: Border.all(color: Colors.transparent),
borderRadius: BorderRadius.circular(100),
staticHintText: "Search items...",
staticHintTextStyle:
TextStyle(color: Colors.grey.shade400, fontSize: 14),
hints: const [
"🔍 Quick search",
"🚀 Easy navigation",
"🌍 Explore destinations",
],
animateHintText: false,
fieldBackgroundColor: Colors.grey[100],
animatedHintTextStyle: const TextStyle(
fontSize: 14,
color: Colors.black,
fontWeight: FontWeight.bold),
hintSwitchDuration: const Duration(seconds: 3),
hintAnimationType: HintAnimationType.slide,
),
const SizedBox(height: 24),
// Scale Animation Example
const Text(
" ◆ Scale In/Out Animation",
style: TextStyle(
fontSize: 15,
color: Colors.green,
fontWeight: FontWeight.bold),
),
AnimatedHintTextField(
suffixIcon: const Icon(Icons.ac_unit, color: Colors.green),
fieldBorderWidth: 1,
focusedBorderColor: Colors.yellow,
unfocusedBorderColor: Colors.grey,
borderRadius: BorderRadius.circular(20),
staticHintText: "Find items...",
staticHintTextStyle:
const TextStyle(color: Colors.grey, fontSize: 14),
hints: const [
"Pizza 🍕",
"Burger 🍔",
"Cake 🍰",
"Noodles 🍜",
"Sandwich 🥪",
],
animateHintText: false,
fieldBackgroundColor: Colors.grey[100],
animatedHintTextStyle: const TextStyle(
fontSize: 14,
color: Colors.black,
fontWeight: FontWeight.bold),
hintSwitchDuration: const Duration(seconds: 3),
hintAnimationType: HintAnimationType.scale,
),
const SizedBox(height: 24),
// Fade Animation Example
const Text(
" ◆ Fade Animation",
style: TextStyle(
fontSize: 16,
color: Colors.pink,
fontWeight: FontWeight.bold),
),
AnimatedHintTextField(
animateHintText: false,
hints: const [
'💡 Quick Search',
'🌍 Explore More',
'🔍 Find Your Favorite',
],
staticHintText: "Search items...",
staticHintTextStyle:
const TextStyle(color: Colors.grey, fontSize: 14),
fieldBackgroundColor: Colors.grey[200],
animatedHintTextStyle: const TextStyle(
fontSize: 15,
color: Colors.black,
fontWeight: FontWeight.bold),
hintSwitchDuration: const Duration(seconds: 2),
hintAnimationType: HintAnimationType.fade,
),
],
),
),
),
),
);
}
}
更多关于Flutter动画提示输入框插件animated_custom_hint_textfield的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter动画提示输入框插件animated_custom_hint_textfield的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用animated_custom_hint_textfield
插件的示例代码。这个插件允许你在输入框中显示带有动画的提示文本。
首先,你需要在你的pubspec.yaml
文件中添加这个插件的依赖:
dependencies:
flutter:
sdk: flutter
animated_custom_hint_textfield: ^最新版本号 # 请替换为实际最新版本号
然后运行flutter pub get
来安装依赖。
接下来是一个完整的示例代码,展示如何使用animated_custom_hint_textfield
:
import 'package:flutter/material.dart';
import 'package:animated_custom_hint_textfield/animated_custom_hint_textfield.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Animated Custom Hint Textfield Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final _formKey = GlobalKey<FormState>();
String _email = '';
String _password = '';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Animated Custom Hint Textfield Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Form(
key: _formKey,
child: Column(
children: <Widget>[
AnimatedCustomHintTextField(
hintText: '请输入邮箱',
labelText: '邮箱',
keyboardType: TextInputType.emailAddress,
validator: (value) {
if (value.isEmpty || !value.contains('@')) {
return '请输入有效的邮箱地址';
}
return null;
},
onSaved: (value) {
_email = value;
},
),
SizedBox(height: 16),
AnimatedCustomHintTextField(
hintText: '请输入密码',
labelText: '密码',
obscureText: true,
validator: (value) {
if (value.isEmpty || value.length < 6) {
return '密码至少6个字符';
}
return null;
},
onSaved: (value) {
_password = value;
},
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () {
if (_formKey.currentState!.validate()) {
_formKey.currentState!.save();
// 可以在这里处理表单数据,例如登录请求
print('Email: $_email, Password: $_password');
}
},
child: Text('提交'),
),
],
),
),
),
);
}
}
在这个示例中,我们使用了AnimatedCustomHintTextField
来代替标准的TextField
。AnimatedCustomHintTextField
具有以下主要属性:
hintText
: 当输入框为空时显示的提示文本。labelText
: 输入框的标签文本。keyboardType
: 键盘类型,用于指定输入内容的类型。validator
: 验证函数,用于验证输入内容的合法性。onSaved
: 保存函数,用于保存输入内容。obscureText
: 是否隐藏输入内容(适用于密码输入框)。
你可以根据需求调整这些属性,以满足你的应用需求。希望这个示例能帮助你更好地使用animated_custom_hint_textfield
插件。