Flutter轻量级消息提示插件snackify的使用
Flutter轻量级消息提示插件snackify的使用
Snackify 是一个用于Flutter的轻量级消息提示插件,提供了多种自定义选项来显示消息提示(SnackBar),如背景颜色、文本样式等。以下是该插件的基本用法和详细配置。
支持作者
如果你觉得这个插件对你有帮助,可以通过 Buy Me a Coffee 支持作者。
特性
- 可定制的SnackBar:支持背景颜色、文本样式等多种自定义选项。
- SnackType:设置不同类型的消息提示(成功、错误、警告、信息)。
- 显示时长:设置SnackBar的显示时间。
- 持久SnackBar:可以设置为手动关闭。
- 位置:可以在屏幕顶部或底部显示。
- 文本转语音(TTS):可以将消息内容读出来。
使用方法
基本示例
import 'package:flutter/material.dart';
import 'package:snackify/snackify.dart';
void showCustomSnackbar(BuildContext context) {
Snackify.show(
context: context,
type: SnackType.success,
title: Text('Hello !'),
subtitle: Text('This is a custom Snackbar.'),
ttsConfig: TTSConfiguration(speakOnShow: true),
duration: const Duration(seconds: 3),
animationDuration: const Duration(milliseconds: 500),
backgroundGradient: const LinearGradient(colors: [Colors.teal, Colors.greenAccent]),
position: SnackPosition.bottom,
persistent: false, // 设置为true表示需要手动关闭
);
}
不同类型的SnackBar
成功类型
Snackify.show(
type: SnackType.success,
///...
);
错误类型
Snackify.show(
type: SnackType.error,
///...
);
警告类型
Snackify.show(
type: SnackType.warning,
///...
);
信息类型
Snackify.show(
type: SnackType.info,
///...
);
参数说明
context
: 当前的BuildContext。type
: 消息提示的类型(SnackType.success
,SnackType.error
,SnackType.warning
,SnackType.info
,SnackType.custom
)。title
: 消息提示的标题。subtitle
: 标题下方的副标题。offset
: 屏幕上的偏移量,默认是(0, 0)。delay
: 显示前的延迟时间。duration
: 消息提示显示的时间,默认是3秒。animationDuration
: 动画持续时间。backgroundGradient
: 自定义背景渐变色。position
: 消息提示的位置,默认是底部(SnackPosition.bottom
),也可以设置为顶部(SnackPosition.top
)。snackShadow
: 阴影效果。persistent
: 是否需要手动关闭,默认是false。action
: 可选的自定义按钮。ttsConfig
: 文本转语音配置。
完整示例代码
以下是一个完整的示例,展示了如何在应用中使用不同的消息提示类型:
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:snackify/snackify.dart';
import 'package:snackify/tts_config.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Snackify Example',
theme: ThemeData(primarySwatch: Colors.blue),
home: const HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
const HomeScreen({super.key});
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Snackify Example'),
),
body: Center(
child: Column(
children: [
ElevatedButton(
onPressed: () {
Snackify.show(
context: context,
type: SnackType.success,
title: Text(
'Well Done !',
style: GoogleFonts.poppins(color: Colors.white),
),
subtitle: Text(
'You have successfully done it !',
style: GoogleFonts.poppins(color: Colors.white),
),
ttsConfig: TTSConfiguration(speakOnShow: true),
duration: const Duration(seconds: 3),
animationDuration: const Duration(milliseconds: 1000),
backgroundGradient: const LinearGradient(
colors: [Colors.teal, Colors.greenAccent],
),
position: SnackPosition.bottom,
);
},
child: const Text("Success"),
),
ElevatedButton(
onPressed: () {
Snackify.show(
context: context,
type: SnackType.error,
backgroundGradient: const LinearGradient(
colors: [Colors.redAccent, Colors.deepOrange],
),
duration: const Duration(seconds: 3),
title: Text(
'Oops ...',
style: GoogleFonts.poppins(color: Colors.white),
),
subtitle: Text(
'Wrong password !',
style: GoogleFonts.poppins(color: Colors.white),
),
ttsConfig: TTSConfiguration(speakOnShow: true),
animationDuration: const Duration(milliseconds: 1000),
position: SnackPosition.bottom,
);
},
child: const Text("Error"),
),
ElevatedButton(
onPressed: () {
Snackify.show(
context: context,
type: SnackType.warning,
duration: const Duration(seconds: 3),
title: Text(
'Password is weak !',
style: GoogleFonts.poppins(color: Colors.white),
),
subtitle: Text(
'Try to enter a strong password.',
style: GoogleFonts.poppins(color: Colors.white),
),
action: TextButton(
onPressed: () {
log('Undo button is pressed');
},
child: ElevatedButton(
onPressed: () {},
child: Text(
'Undo',
style: GoogleFonts.poppins(color: Colors.black),
),
),
),
ttsConfig: TTSConfiguration(speakOnShow: true),
animationDuration: const Duration(milliseconds: 1000),
backgroundGradient: const LinearGradient(
colors: [Colors.orange, Colors.yellow],
),
position: SnackPosition.bottom,
);
},
child: const Text("Warning"),
),
ElevatedButton(
onPressed: () {
Snackify.show(
context: context,
type: SnackType.info,
duration: const Duration(seconds: 3),
title: Text(
'Do you know ?',
style: GoogleFonts.poppins(color: Colors.white),
),
subtitle: Text(
'You have ₹156 cash in your wallet !',
style: GoogleFonts.poppins(color: Colors.white),
),
snackShadow: [
const BoxShadow(
color: Colors.grey,
blurRadius: 6.0,
spreadRadius: 2.0,
offset: Offset(4, 4),
),
],
persistent: true,
ttsConfig: TTSConfiguration(speakOnShow: true),
animationDuration: const Duration(milliseconds: 1000),
backgroundGradient: const LinearGradient(
colors: [Colors.blue, Colors.lightBlueAccent],
),
position: SnackPosition.bottom,
);
},
child: const Text("Info"),
),
],
),
),
);
}
}
通过上述示例,你可以根据自己的需求灵活使用 Snackify
来展示不同类型的消息提示,并进行丰富的自定义设置。希望这些示例能帮助你更好地理解和使用 Snackify
插件。
更多关于Flutter轻量级消息提示插件snackify的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter轻量级消息提示插件snackify的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用轻量级消息提示插件snackify
的示例代码。这个插件可以帮助你快速实现底部弹出的消息提示(Snackbar)。
1. 添加依赖
首先,你需要在pubspec.yaml
文件中添加snackify
依赖:
dependencies:
flutter:
sdk: flutter
snackify: ^x.y.z # 请将x.y.z替换为最新版本号
然后运行flutter pub get
来安装依赖。
2. 导入插件
在你需要使用Snackbar的Dart文件中导入插件:
import 'package:snackify/snackify.dart';
3. 初始化Snackify
在你的主应用程序入口(通常是main.dart
或app.dart
)中初始化Snackify:
import 'package:flutter/material.dart';
import 'package:snackify/snackify.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
Snackify.init(context); // 初始化Snackify
return MaterialApp(
home: MyHomePage(),
);
}
}
4. 使用Snackify显示消息
现在你可以在任何地方使用Snackify.showSnackBar
方法来显示消息提示。例如,在一个按钮点击事件中:
import 'package:flutter/material.dart';
import 'package:snackify/snackify.dart';
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Snackify Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// 显示Snackbar
Snackify.showSnackBar(
context,
content: Text('这是一个消息提示!'),
duration: Duration(seconds: 3), // 可选:设置持续时间
backgroundColor: Colors.blue, // 可选:设置背景颜色
action: SnackBarAction(
label: '点击我',
onPressed: () {
// 点击动作
print('Snackbar按钮被点击');
},
),
);
},
child: Text('显示Snackbar'),
),
),
);
}
}
完整示例代码
将上述所有代码片段组合起来,你将得到一个完整的Flutter应用程序,该应用程序使用snackify
插件来显示一个带有动作的Snackbar:
import 'package:flutter/material.dart';
import 'package:snackify/snackify.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
Snackify.init(context);
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Snackify Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
Snackify.showSnackBar(
context,
content: Text('这是一个消息提示!'),
duration: Duration(seconds: 3),
backgroundColor: Colors.blue,
action: SnackBarAction(
label: '点击我',
onPressed: () {
print('Snackbar按钮被点击');
},
),
);
},
child: Text('显示Snackbar'),
),
),
);
}
}
这样,你就成功地在Flutter项目中使用了snackify
插件来显示轻量级的消息提示。