Flutter消息提示插件custom_flutter_toast的使用
Flutter消息提示插件custom_flutter_toast的使用
custom_flutter_toast
是一个用于Flutter应用的消息提示(Toast)库。它支持两种类型的消息提示:一种需要 BuildContext
,另一种不需要 BuildContext
。以下是关于如何使用这个插件的详细介绍,并提供了一个完整的示例代码。
1. Toast 不需要 BuildContext (仅限 Android 和 iOS)
这种类型的 Toast 有有限的功能,并且无法自定义 UI。它适用于 Android 和 iOS 平台。
示例代码:
final _nativeToastPlugin = NativeToast();
await _nativeToastPlugin.showToast(
message: "Hello from Native Toast", // 消息内容,必填
backgroundColor: Colors.red, // 背景颜色,默认为 null
maxLines: 6, // 最大行数,默认为 2
gravity: ToastGravity.bottom, // 显示位置,默认为底部
textColor: Colors.white, // 文字颜色,默认为 null
fontSize: 16, // 字体大小,默认为 null
showImage: true, // 是否显示图片,默认为 true
imagePath: "assets/car_image.jpeg", // 图片路径,默认为 flutter_logo
);
2. Toast 需要 BuildContext (适用于所有平台)
这种类型的 Toast 提供了更多的控制选项,包括自定义 UI、排队显示、移除单个 Toast 和清除队列等功能。它适用于所有平台。
使用步骤:
-
在
main.dart
中设置全局NavigatorKey
:final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
-
在
MaterialApp
中使用builder
来初始化 Toast:MaterialApp( builder: flutterToastBuilder(), // 使用自定义 Toast 构建器 navigatorKey: navigatorKey, // 设置全局 NavigatorKey home: const HomeScreen(), );
-
在页面中初始化
FToast
:class _HomeScreenState extends State<HomeScreen> { final _flutterToast = FlutterToast(); FToast? fToast; [@override](/user/override) void initState() { super.initState(); fToast = FToast(); fToast!.init(context); // 初始化 FToast } Future<void> showToastMessage(String message, {bool withImage = false}) async { try { _flutterToast.showCustomToast( message, navigatorKey: navigatorKey, // 使用全局 NavigatorKey maxLines: 5, // 最大行数,默认为 5 backgroundColor: Colors.red, // 背景颜色,默认为 null textColor: Colors.white, // 文字颜色,默认为 null imagePath: "assets/car_image.jpeg", // 图片路径,默认为 flutter_logo showImage: withImage, // 是否显示图片,默认为 true ); } on PlatformException { if (kDebugMode) { print('Failed to show toast.'); } } } }
3. 完整示例代码
以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 custom_flutter_toast
插件来显示不同类型的 Toast。
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:custom_flutter_toast/export.dart';
/// The navigator key to be used throughout the app.
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
void main() {
runApp(const MyApp());
}
/// The main application widget.
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
builder: flutterToastBuilder(), // Use the custom toast builder
navigatorKey: navigatorKey, // Set the navigator key
home: const HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
const HomeScreen({super.key});
[@override](/user/override)
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final _nativeToastPlugin = NativeToast();
final _flutterToast = FlutterToast();
FToast? fToast;
[@override](/user/override)
void initState() {
super.initState();
fToast = FToast();
fToast!.init(context); // Initialize FToast
}
Future<void> showToastMessage(String message, {bool useNativeToast = false, bool withImage = false}) async {
try {
if (useNativeToast) {
await _nativeToastPlugin.showToast(
message: message,
backgroundColor: Colors.red,
maxLines: 6,
gravity: ToastGravity.bottom,
textColor: Colors.white,
fontSize: 16,
showImage: withImage,
imagePath: "assets/car_image.jpeg",
);
} else {
_flutterToast.showCustomToast(
message,
navigatorKey: navigatorKey,
maxLines: 5,
backgroundColor: Colors.red,
textColor: Colors.white,
imagePath: "assets/car_image.jpeg",
showImage: withImage,
);
}
} on PlatformException {
if (kDebugMode) {
print('Failed to show toast.');
}
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Toast Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
showToastMessage("Hello from Flutter Toast", useNativeToast: false, withImage: true);
},
child: const Text('Show Flutter Toast With Image'),
),
const SizedBox(height: 16.0),
ElevatedButton(
onPressed: () {
showToastMessage("Hello from Native Toast", useNativeToast: true, withImage: true);
},
child: const Text('Show Native Toast With Image'),
),
const SizedBox(height: 16.0),
ElevatedButton(
onPressed: () {
showToastMessage("Another message from Flutter Toast", useNativeToast: false);
},
child: const Text('Show Another Flutter Toast'),
),
const SizedBox(height: 16.0),
ElevatedButton(
onPressed: () {
showToastMessage("Another message from Native Toast", useNativeToast: true);
},
child: const Text('Show Another Native Toast'),
),
],
),
),
);
}
}
更多关于Flutter消息提示插件custom_flutter_toast的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter消息提示插件custom_flutter_toast的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用custom_flutter_toast
插件来显示消息提示的示例代码。这个插件允许你以更灵活和自定义的方式显示Toast消息。
1. 添加依赖
首先,你需要在pubspec.yaml
文件中添加custom_flutter_toast
依赖:
dependencies:
flutter:
sdk: flutter
custom_flutter_toast: ^2.0.0 # 请确保使用最新版本
然后运行flutter pub get
来安装依赖。
2. 初始化插件
在你的主文件(通常是main.dart
)中,你需要初始化CustomFlutterToast
插件。这通常在MaterialApp
或CupertinoApp
的builder
属性中进行。
import 'package:flutter/material.dart';
import 'package:custom_flutter_toast/custom_flutter_toast.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return CustomFlutterToast.init(
context,
child: MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
),
);
}
}
3. 使用Toast消息
现在你可以在任何地方调用CustomFlutterToast.showToast
方法来显示Toast消息。以下是一个简单的例子,展示如何在按钮点击时显示Toast消息。
import 'package:flutter/material.dart';
import 'package:custom_flutter_toast/custom_flutter_toast.dart';
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Toast Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
showToastMessage(context);
},
child: Text('Show Toast'),
),
),
);
}
void showToastMessage(BuildContext context) {
CustomFlutterToast.showToast(
context,
msg: "Hello, this is a custom toast message!",
toastLength: CustomFlutterToast.LENGTH_SHORT,
gravity: CustomFlutterToast.BOTTOM,
animation: CustomFlutterToast.BOUNCE,
backgroundColor: Colors.black.withOpacity(0.7),
textColor: Colors.white,
fontSize: 16.0,
);
}
}
4. 自定义Toast样式
custom_flutter_toast
插件允许你高度自定义Toast消息的样式,包括消息内容、显示时长、位置、动画效果、背景颜色和文本颜色等。在上面的例子中,我们展示了如何设置这些属性。
5. 运行应用
完成上述步骤后,你可以运行你的Flutter应用,点击按钮时应该会看到一个自定义的Toast消息。
总结
custom_flutter_toast
插件提供了灵活且强大的方式来显示Toast消息,使得在Flutter应用中实现消息提示变得更加简单和直观。通过自定义各种属性,你可以轻松创建符合你应用风格的Toast消息。