Можно ли создать что-то похожее на тосты во флаттере? Просто крошечное окно уведомлений, которое не находится прямо перед лицом пользователя и не блокирует и не затухает за ним?
169
Вы можете получить доступ к родителю, ScaffoldState
используяScaffold.of(context)
Тогда сделай что-нибудь вроде
Scaffold.of(context).showSnackBar(SnackBar(
content: Text("Sending Message"),
));
Закусочные являются официальными «Тостами» из материала дизайна. См. Https://material.io/design/components/snackbars.html#usage
Вот полностью рабочий пример:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: const Home(),
);
}
}
class Home extends StatelessWidget {
const Home({
Key key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Snack bar'),
),
/// We use [Builder] here to use a [context] that is a descendant of [Scaffold]
/// or else [Scaffold.of] will return null
body: Builder(
builder: (context) => Center(
child: RaisedButton(
child: const Text('Show toast'),
onPressed: () => _showToast(context),
),
),
),
);
}
void _showToast(BuildContext context) {
final scaffold = Scaffold.of(context);
scaffold.showSnackBar(
SnackBar(
content: const Text('Added to favorite'),
action: SnackBarAction(
label: 'UNDO', onPressed: scaffold.hideCurrentSnackBar),
),
);
}
}
showSnackBar()
должен бытьScaffold
родитель.Используйте этот плагин
источник
Unhandled Exception: MissingPluginException(No implementation found for method showToast on channel PonnamKarthik/fluttertoast)
SnackBar
безусловно, правильный класс для использования, как указал Darky.Одна хитрость
showSnackBar
в том, чтобы добраться доScaffoldState
, если вы пытаетесь вызватьshowSnackBar
внутри метода сборки, где вы строите свойScaffold
.Вы можете увидеть такую ошибку, которая содержит текст, объясняющий, как решить проблему.
Вы можете передать
GlobalKey
свойScaffold
конструктор:Или вы можете использовать,
Builder
чтобы создатьBuildContext
дочерний элемент скаффолда.Наконец, вы можете разделить ваш виджет на несколько классов, что является лучшим долгосрочным подходом.
источник
I/flutter ( 4965): The following assertion was thrown while handling a gesture: I/flutter ( 4965): type 'LabeledGlobalKey<ScaffoldState>' is not a subtype of type 'BuildContext' of 'context' where I/flutter ( 4965): LabeledGlobalKey is from package:flutter/src/widgets/framework.dart I/flutter ( 4965): ScaffoldState is from package:flutter/src/material/scaffold.dart I/flutter ( 4965): Scaffold is from package:flutter/src/material/scaffold.dart I/flutter ( 4965): BuildContext is from package:flutter/src/widgets/framework.dart
GlobalKey
в качестве аргумента, гдеBuildContext
ожидается. Я не могу помочь вам отладить это дальше, не видя больше вашего кода. Пожалуйста, опубликуйте строку кода, которая вызывает исключение, возможно, вы просто не используете правильные аргументы.Builder
вами опции хорошо работает. Столкнулся с этой проблемой, и это решило ее для меня.final key = new GlobalKey<ScaffoldState>();
вне сборки Widget было исправлено.чтобы показать тост сообщение, вы можете использовать плагин flutterToast, чтобы использовать этот плагин, вы должны
fluttertoast: ^3.1.0
$ flutter packages get
import 'package:fluttertoast/fluttertoast.dart';
используйте это так
Для получения дополнительной информации проверьте это
источник
трепетание: ^ 3.1.3
источник
Я хотел бы предоставить альтернативное решение для использования пакета flushbar. https://github.com/AndreHaueisen/flushbar
Как сказано в пакете: используйте этот пакет, если вам нужно больше настроек при уведомлении вашего пользователя. Для разработчиков Android это сделано, чтобы заменить тосты и закусочные.
Еще одно предложение использовать флешбар Как отобразить снэкбар после navigator.pop (context) в Flutter?
Вы также можете установить flushbarPosition для TOP или BOTTOM
источник
Импортируйте библиотеку
трепетание: 3.1.3
Используйте как ниже
);
источник
В случае, если данный пакет Fluttertoast не работает ... Тогда я предлагаю вам попробовать тост .
В нем нет излишеств и церемоний.
Это просто работает.
Я заметил ошибку в примере, приведенном в его Readme:
Toast.show("Toast plugin app", duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
Пока метод требует контекста. Так что хорошо добавьте «контекст» следующим образом:
Toast.show("Toast plugin app", context, duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
Есть вероятность, что это будет исправлено к тому времени, как вы проверили, хотя я уже представил PR.
источник
pub.dartlang.org/packages/fluttertoast
плагином. Это намного чище [лаконичнее] и проще в настройке.Есть три способа показать тост на флаттере приложения.
Я расскажу вам обо всех трех известных мне способах и выберу тот, который вы хотите использовать. Я бы порекомендовал второй.
1: использование внешнего пакета.
это первый метод, который является самым простым способом показать тост в приложении флаттера.
Прежде всего, вы должны добавить этот пакет в pubspec.yaml
затем импортируйте пакет в файл, где вы хотите показать тост.
и последний шаг покажи тост.
2: используя официальный способ.
этот метод также прост, но вы должны иметь дело с ним. Я не говорю, что это сложно, это просто и чисто, я бы порекомендовал этот метод.
для этого метода все, что вам нужно сделать, это показать тост, используя приведенный ниже код.
но помните, что вы должны использовать контекст скаффолда.
3: используя нативный API.
Теперь этот метод больше не имеет смысла, если у вас уже есть два метода выше. Используя этот метод, вы должны написать собственный код для Android и iOS, а затем преобразовать его в плагин, и вы готовы к работе. Этот метод будет занимать ваше время, и вам придется изобретать велосипед. который уже был изобретен.
источник
Для тех, кто ищет то,
Toast
что может выжить, маршрут меняетSnackBar
могут быть не лучшим вариантом.Взгляните
Overlay
вместо этого.https://api.flutter.dev/flutter/widgets/Overlay-class.html
источник
Добавьте flutter_just_toast к вашим зависимостям в вашем Pubspecs.yaml
зависимости:
Следующий пакет импорта в ваш класс:
Реализация тоста с сообщением
источник
просто используйте SnackBar (content: Text ("hello"),) внутри любого события, такого как onTap и onPress
Вы можете прочитать больше о Snackbar здесь https://flutter.dev/docs/cookbook/design/snackbars
источник
Для этого есть разные версии.
1) Прежде всего, вы можете использовать SnackBar, который является виджетом во Flutter.
2) Вы можете использовать библиотеки, такие как toast, flutter_toast из pub.dev.
3) Третья версия создает ваш собственный виджет. Его можно создать с помощью виджета «Наложение» и «Анимация во флаттере».
Вы можете это руководство, чтобы узнать больше об этом. Вот ссылка
источник
Для Android оригинальной графики тост вы можете использовать это: https://pub.dartlang.org/packages/fluttertoast
Отлично работает на Android и iOS. введите описание изображения здесь
источник
https://pub.dev/packages/toast использовать это для тоста, эта библиотека довольно проста в использовании и отлично работает для iOS и Android,
Синтаксис для шоу Тост:
источник
Шаг 1:
зависимости:
Шаг 2:
Шаг 3:
источник
используйте эту зависимость:
toast: ^0.1.3
затем импортируйте зависимость toast на странице:import 'package:toast/toast.dart';
затем onTap () виджета:Toast.show("Toast plugin app", context,duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
источник
Вы можете использовать этот пакет: тост
добавьте эту строку в ваши зависимости
затем используйте это так:
источник
получить пакет тостов трепетать здесь
Добавьте этот пакет в зависимости вашего проекта в pubspec.yaml
Затем всякий раз, когда вы хотите, чтобы тост показывался как по нажатию кнопки
источник
Там нет виджета для тостов во флаттере, вы можете перейти к этому плагину Usecase:
источник
Вы можете использовать библиотеку "fluttertoast". Для этого добавьте его в файл pubspec.yaml, например:
Затем импортируйте эту библиотеку в файл dart, который вам нужен, и напишите свой код. Например, обратитесь к следующему коду:
источник
Импорт
cupertino_icons: ^0.1.2
и запись ниже кодаисточник
Для сообщения о тосте во флаттере используйте библиотеку bot_toast . Эта библиотека предоставляет многофункциональные функции, поддержку отображения уведомлений, текста, загрузки, вложений и т. Д.
источник
Это довольно просто,
Нам просто нужно установить пакет тостов. Обратитесь к следующей документации: https://pub.dev/packages/fluttertoast
На вкладке установки вы получите зависимость, которую нужно вставить в файл pubspec.yaml и затем установить.
После этого просто импортируйте пакет:
импортировать «пакет: fluttertoast / fluttertoast.dart»;
Аналогично вышеприведенной строке.
И затем, используя класс FlutterToast, вы можете использовать свой fluttertoast.
Вы сделали !!!
источник
Это довольно легко показать тост сообщение в флаттер.
Scaffold.of(context).showSnackBar(SnackBar( content: Text("Toast Text Here"), ));
источник
Вы можете использовать что-то вроде FlutterToast
Импортируйте библиотеку
Используйте как ниже
Это оно..
источник