Flutter Getx Snackbar не работает
Я создал приложение flutter и использовал пакет getx. Но затем я использовал его, чтобы показать закусочную, функция выполняется, но закусочная не отображается.
onPressed: () {
print("executed");
Get.snackbar(
"title",
"content",
);
},
5 ответов
Чтобы использовать GetX Snack Bar, вы должны использоватьGetMaterialApp
вместоMaterialApp
вmain.dart
.
Вы можете создать свой собственныйSnackBar
также.
final kPadding = 8.0; // up to you
class Snack {
/// show the snack bar
/// [content] is responsible for the text of the snack bar
static show({
required String content,
SnackType snackType = SnackType.info,
SnackBarBehavior behavior = SnackBarBehavior.fixed,
}) {
ScaffoldMessenger.of(Get.context!).showSnackBar(
SnackBar(
content: Text(
content,
style: Get.textTheme.headline5
?.copyWith(color: _getSnackbarTextColor(snackType)),
),
behavior: behavior,
backgroundColor: _getSnackbarColor(snackType),
padding: const EdgeInsets.symmetric(
horizontal: kPadding * 3,
vertical: kPadding * 2,
),
),
);
}
static Color _getSnackbarColor(SnackType type) {
if (type == SnackType.error) return const Color(0xffFF7A7A);
if (type == SnackType.warning) return Colors.amber;
if (type == SnackType.info) return Colors.blue;
return Colors.white;
}
static Color _getSnackbarTextColor(SnackType type) {
if (type == SnackType.error || type == SnackType.info) return Colors.white;
return const Color(0xff1C1C1C);
}
}
enum SnackType { info, warning, error }
Теперь в любом месте вы можете использовать это таким образом.
Snack.show(content: 'Your Snack Message', snackType: SnackType.error, behavior: SnackBarBehavior.floating);
Единственная причина в том, что вы не используете виджет GetMaterialApp() при запуске.
вам нужно изменить виджет MaterialApp() на виджет GetMaterialApp().
import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return GetMaterialApp(
home: SafeArea(
child: Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
print("executed");
Get.snackbar(
"title",
"content",
);
},
child: Icon(Icons.ac_unit)),
),
),
),
);
}
}