Posso criar algo semelhante ao Toasts in Flutter? Apenas uma pequena janela de notificação que não está diretamente na cara do usuário e não bloqueia ou desbota a vista por trás dela?
166
Você pode acessar o pai ScaffoldState
usandoScaffold.of(context)
Então faça algo como
Scaffold.of(context).showSnackBar(SnackBar(
content: Text("Sending Message"),
));
Snackbars são o "brinde" oficial do design do material. Consulte https://material.io/design/components/snackbars.html#usage
Aqui está um exemplo completo:
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()
deve ter umScaffold
pai.Use este plugin
fonte
Unhandled Exception: MissingPluginException(No implementation found for method showToast on channel PonnamKarthik/fluttertoast)
SnackBar
é definitivamente a classe certa a ser usada, como apontado por Darky.Uma coisa complicada
showSnackBar
é chegar aoScaffoldState
, se você está tentando chamarshowSnackBar
dentro do método de construção onde você constrói o seuScaffold
.Você pode ver um erro como este, que inclui algum texto explicando como resolver o problema.
Você pode passar um
GlobalKey
para o seuScaffold
construtor:Ou você pode usar a
Builder
para criarBuildContext
um filho do Andaime.Por fim, você pode dividir seu widget em várias classes, que é a melhor abordagem a longo prazo.
fonte
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
como argumento em queBuildContext
é esperado. Não posso ajudá-lo a depurar isso ainda mais sem ver mais do seu código. Poste a linha de código que está lançando a exceção, provavelmente você não está usando os argumentos corretos.Builder
opção que você deu funciona bem. Deparei com esse problema e resolvi isso para mim.final key = new GlobalKey<ScaffoldState>();
fora da compilação do Widget o corrigiu.para mostrar a mensagem do brinde, você pode usar o plugin flutterToast para usar este plugin, você precisa
fluttertoast: ^3.1.0
$ flutter packages get
import 'package:fluttertoast/fluttertoast.dart';
use-o assim
Para mais informações, verifique isto
fonte
fluttertoast: ^ 3.1.3
fonte
Gostaria de fornecer uma solução alternativa para usar o flushbar do pacote. https://github.com/AndreHaueisen/flushbar
Como o pacote dizia: Use este pacote se precisar de mais personalização ao notificar seu usuário. Para desenvolvedores do Android, ele é feito para substituir brindes e lanchonetes.
Outra sugestão para usar o flushbar Como mostrar snackbar após navigator.pop (context) no Flutter?
Você também pode definir flushbarPosition como TOP ou BOTTOM
fonte
Importar a lib
fluttertoast: 3.1.3
Use como abaixo
);
fonte
Caso o pacote Fluttertoast fornecido até agora não funcione ... Então, sugiro que tente brindar .
Não tem frescura nem cerimônia.
Isso simplesmente funciona.
Notei um bug no exemplo fornecido no seu Readme:
Toast.show("Toast plugin app", duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
Enquanto o método requer um contexto. Então faça bem em adicionar 'contexto' assim:
Toast.show("Toast plugin app", context, duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
Há uma chance de que isso tenha sido corrigido no momento em que você verificou, já enviei um PR.
fonte
pub.dartlang.org/packages/fluttertoast
plugin. Este é muito mais limpo [conciso] e mais fácil de personalizar.Existem três maneiras de mostrar torradas no App Flutter.
Vou falar sobre as três maneiras que eu conheço e escolher qual você deseja usar. Eu recomendaria o segundo.
1: uso de pacote externo.
este é o primeiro método que é a maneira mais fácil de mostrar torradas no aplicativo vibração.
Antes de tudo, você deve adicionar este pacote no pubspec.yaml
depois importe o pacote no arquivo em que deseja mostrar o brinde.
e o último passo mostra a torrada.
2: usando maneira oficial.
esse método também é simples, mas você precisa lidar com isso. Eu não estou dizendo que é difícil, é simples e limpo, eu recomendaria este método.
para esse método, tudo o que você precisa fazer é mostrar o brinde usando o código abaixo.
mas lembre-se de que você deve usar o contexto do andaime.
3: usando API nativa.
agora esse método não faz mais sentido quando você já possui os dois métodos acima. Usando esse método, você deve escrever um código nativo para Android e iOS e, em seguida, convertê-lo em plug-in e pronto. esse método consumirá seu tempo e você precisará reinventar a roda. que já foi inventado.
fonte
Para aqueles que procuram o
Toast
que pode sobreviver à rota, muda oSnackBar
pode não ser a melhor opção.Dê uma olhada em seu
Overlay
lugar.https://api.flutter.dev/flutter/widgets/Overlay-class.html
fonte
Adicione flutter_just_toast às suas dependências no seu Pubspecs.yaml
dependências:
Próximo pacote de importação para sua classe:
Implementar o Toast com mensagem
fonte
basta usar SnackBar (conteúdo: Texto ("olá")) em qualquer evento como onTap e onPress
você pode ler mais sobre o Snackbar aqui https://flutter.dev/docs/cookbook/design/snackbars
fonte
Para isso, existem versões diferentes.
1) Primeiro de tudo, você pode usar o SnackBar, que é um widget no Flutter.
2) Você pode usar bibliotecas como toast, flutter_toast de pub.dev.
3) A terceira versão está criando seu widget personalizado. Ele pode ser criado usando o widget Overlay e Animation in Flutter.
Você pode este tutorial para aprender mais sobre isso. Aqui está um link
fonte
Para torradas com gráficos originais do Android, você pode usar este: https://pub.dartlang.org/packages/fluttertoast
Funciona bem no Android e iOS. insira a descrição da imagem aqui
fonte
https://pub.dev/packages/toast use isso para brindar esta biblioteca é muito fácil de usar e funciona perfeitamente para ios e android,
Sintaxe do show Toast:
fonte
Passo 1:
dependências:
Passo 2:
Etapa 3:
fonte
use esta dependência:
toast: ^0.1.3
importe a dependência do brinde na página:import 'package:toast/toast.dart';
em seguida, em onTap () do widget:Toast.show("Toast plugin app", context,duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
fonte
você pode usar este pacote: brinde
adicione esta linha às suas dependências
use-o assim:
fonte
obter pacote brinde vibração aqui
Adicione este pacote às dependências do seu projeto em pubspec.yaml
Então, sempre que você quiser que o Toast seja exibido como um toque de um botão
fonte
Não há nenhum widget para o brinde em vibração, Você pode ir a este plugin Usecase:
fonte
Você pode usar a biblioteca "fluttertoast". Para fazer isso, adicione-o no arquivo pubspec.yaml como:
Em seguida, importe essa biblioteca para o arquivo dardo em que você precisa do brinde e escreva seu código. Por exemplo, consulte o seguinte código:
fonte
Importe
cupertino_icons: ^0.1.2
e escreva o código abaixofonte
Para a mensagem de brinde no flutter, use a biblioteca bot_toast . Esta biblioteca oferece suporte rico em recursos para exibição de notificações, texto, carregamento, anexos, etc.
fonte
É bem simples
Nós apenas temos que instalar o pacote de brinde de vibração. Consulte a seguinte documentação: https://pub.dev/packages/fluttertoast
Na guia de instalação, você obterá a dependência necessária para colá-la no pubspec.yaml e depois na instalação.
Depois disso, basta importar o pacote:
import 'pacote: fluttertoast / fluttertoast.dart';
Semelhante à linha acima.
E então, usando a classe FlutterToast, você pode usar o seu fluttertoast.
Você Terminou!!!
fonte
É bastante fácil mostrar uma mensagem do Toast no Flutter.
Scaffold.of(context).showSnackBar(SnackBar( content: Text("Toast Text Here"), ));
fonte
Você pode usar algo como FlutterToast
Importar a lib
Use como abaixo
É isso aí..
fonte