Bisakah saya membuat sesuatu yang mirip dengan Toasts di Flutter? Hanya sebuah jendela notifikasi kecil yang tidak langsung di hadapan pengguna dan tidak mengunci atau memudar tampilan di belakangnya?
166
Anda dapat mengakses orang tua ScaffoldState
menggunakanScaffold.of(context)
Kemudian lakukan sesuatu seperti
Scaffold.of(context).showSnackBar(SnackBar(
content: Text("Sending Message"),
));
Snackbars adalah "Toast" resmi dari desain material. Lihat https://material.io/design/components/snackbars.html#usage
Ini adalah contoh yang berfungsi penuh:
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()
harus memilikiScaffold
orangtua.Gunakan plugin ini
sumber
Unhandled Exception: MissingPluginException(No implementation found for method showToast on channel PonnamKarthik/fluttertoast)
SnackBar
jelas merupakan kelas yang tepat untuk digunakan, seperti yang ditunjukkan oleh Darky.Satu hal yang sulit tentang
showSnackBar
mencapaiScaffoldState
, jika Anda mencoba memanggilshowSnackBar
dalam metode membangun tempat Anda membangunScaffold
.Anda mungkin melihat kesalahan seperti ini, yang mencakup beberapa teks yang menjelaskan cara mengatasi masalah.
Anda dapat meneruskan
GlobalKey
keScaffold
konstruktor:Atau Anda dapat menggunakan
Builder
untuk membuatBuildContext
yang merupakan anak dari Scaffold.Terakhir, Anda dapat membagi widget menjadi beberapa kelas, yang merupakan pendekatan jangka panjang terbaik.
sumber
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
argumen sebagai mana yangBuildContext
diharapkan. Saya tidak dapat membantu Anda men-debug ini lebih lanjut tanpa melihat lebih banyak kode Anda. Silakan kirim baris kode yang melempar pengecualian, mungkin Anda hanya tidak menggunakan argumen yang benar.Builder
opsi yang Anda berikan berfungsi dengan baik. Berlari ke masalah ini dan ini menyelesaikannya untuk saya.final key = new GlobalKey<ScaffoldState>();
luar Widget build memperbaikinya.untuk menampilkan pesan roti panggang, Anda dapat menggunakan plugin flutterToast untuk menggunakan plugin ini
fluttertoast: ^3.1.0
$ flutter packages get
import 'package:fluttertoast/fluttertoast.dart';
gunakan seperti ini
Untuk info lebih lanjut, periksa ini
sumber
fluttertoast: ^ 3.1.3
sumber
Saya ingin memberikan solusi alternatif untuk menggunakan paket flushbar. https://github.com/AndreHaueisen/flushbar
Seperti yang dikatakan paket: Gunakan paket ini jika Anda memerlukan lebih banyak penyesuaian saat memberi tahu pengguna Anda. Untuk pengembang Android, itu dibuat untuk menggantikan toasts dan snackbars.
Saran lain untuk menggunakan flushbar Bagaimana cara menunjukkan snackbar setelah navigator.pop (konteks) di Flutter?
Anda juga dapat mengatur flushbarPosisi ke TOP atau BOTTOM
sumber
Impor lib
fluttertoast: 3.1.3
Gunakan seperti di bawah ini
);
sumber
Jika paket Fluttertoast yang diberikan sejauh ini tidak berfungsi ... Maka saya sarankan Anda mencoba roti panggang .
Tidak memiliki embel-embel dan tidak ada upacara.
Itu hanya bekerja.
Saya perhatikan ada bug dalam contoh yang diberikan dalam Readme:
Toast.show("Toast plugin app", duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
Sedangkan metode membutuhkan konteks. Jadi sebaiknya tambahkan 'konteks' seperti ini:
Toast.show("Toast plugin app", context, duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
Ada kemungkinan bahwa ini akan diperbaiki pada saat Anda memeriksa, saya sudah mengirimkan PR.
sumber
pub.dartlang.org/packages/fluttertoast
plugin. Yang ini jauh lebih bersih [ringkas] dan lebih mudah untuk disesuaikan.Ada tiga cara untuk menunjukkan bersulang di bergetar App.
Saya akan memberi tahu Anda tentang ketiga cara yang saya tahu dan pilih mana yang ingin Anda gunakan. Saya akan merekomendasikan yang kedua.
1: penggunaan paket eksternal.
ini adalah metode pertama yang merupakan cara paling mudah untuk menunjukkan bersulang pada aplikasi bergetar.
pertama-tama Anda harus menambahkan paket ini di pubspec.yaml
kemudian impor paket dalam file di mana Anda ingin menunjukkan roti panggang.
dan langkah terakhir menunjukkan roti panggang.
2: menggunakan cara resmi.
metode ini juga sederhana tetapi Anda harus menghadapinya. Saya tidak mengatakan bahwa itu sulit, sederhana dan bersih, saya akan merekomendasikan metode ini.
untuk metode ini yang harus Anda lakukan menunjukkan roti bakar menggunakan kode di bawah ini.
tetapi ingat bahwa Anda harus menggunakan konteks scaffold.
3: menggunakan api asli.
sekarang metode ini tidak masuk akal lagi ketika Anda sudah memiliki dua metode di atas. menggunakan metode ini Anda harus menulis kode asli untuk android dan iOS dan kemudian mengubahnya menjadi plugin dan Anda siap untuk pergi. metode ini akan menghabiskan waktu Anda dan Anda harus menemukan kembali roda. yang telah ditemukan.
sumber
Untuk orang-orang yang mencari
Toast
apa yang bisa selamat dari perubahan ruteSnackBar
mungkin bukan pilihan terbaik.Lihatlah
Overlay
sebagai gantinya.https://api.flutter.dev/flutter/widgets/Overlay-class.html
sumber
Tambahkan flutter_just_toast ke dependensi Anda di Pubspecs.yaml Anda
dependensi:
Paket impor selanjutnya ke kelas Anda:
Terapkan Toast dengan pesan
sumber
cukup gunakan SnackBar (konten: Teks ("halo"),) di dalam acara apa pun seperti onTap dan onPress
Anda dapat membaca lebih lanjut tentang Snackbar di sini https://flutter.dev/docs/cookbook/design/snackbars
sumber
Untuk ini, ada berbagai versi.
1) Pertama-tama, Anda dapat menggunakan SnackBar yang merupakan widget di Flutter.
2) Anda dapat menggunakan perpustakaan seperti roti panggang, flutter_toast dari pub.dev.
3) Versi ketiga adalah membuat widget khusus Anda. Itu dapat dibuat menggunakan widget Hamparan dan Animasi dalam Flutter.
Anda dapat tutorial ini untuk mempelajari lebih lanjut tentang ini. Berikut ini tautannya
sumber
Untuk roti panggang grafis orisinal android Anda dapat menggunakan ini: https://pub.dartlang.org/packages/fluttertoast
Berfungsi dengan baik di Android dan iOS. masukkan deskripsi gambar di sini
sumber
https://pub.dev/packages/toast gunakan ini untuk bersulang perpustakaan ini cukup mudah digunakan dan berfungsi sempurna untuk ios dan android,
Sintaks untuk show Toast:
sumber
Langkah 1:
dependensi:
Langkah 2:
Langkah 3:
sumber
gunakan dependensi ini:
toast: ^0.1.3
lalu impor dependensi toast di halaman:import 'package:toast/toast.dart';
lalu onTap () dari widget:Toast.show("Toast plugin app", context,duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
sumber
Anda dapat menggunakan paket ini: bersulang
tambahkan baris ini ke dependensi Anda
lalu gunakan seperti ini:
sumber
dapatkan paket flutter toast di sini
Tambahkan paket ini ke dependensi proyek Anda di pubspec.yaml
Kemudian setiap kali Anda ingin Toast ditampilkan seperti pada satu ketukan tombol
sumber
Tidak ada widget untuk roti panggang dalam flutter, Anda dapat membuka Usecase plugin ini :
sumber
Anda dapat menggunakan pustaka "fluttertoast". Untuk melakukan ini, tambahkan dalam file pubspec.yaml seperti:
Kemudian impor pustaka itu dalam file panah yang Anda butuhkan untuk bersulang dan menulis kode Anda. Sebagai contoh, lihat kode berikut:
sumber
Impor
cupertino_icons: ^0.1.2
dan Tulis kode di bawah inisumber
Untuk pesan roti dalam flutter gunakan perpustakaan bot_toast . Perpustakaan ini menyediakan Fitur kaya, dukungan untuk menampilkan pemberitahuan, teks, memuat, lampiran, dll. Roti panggang
sumber
Cukup sederhana,
Kami hanya perlu menginstal paket flutter toast. Lihat dokumentasi berikut: https://pub.dev/packages/fluttertoast
Pada tab instal Anda akan mendapatkan dependensi yang harus Anda tempel di pubspec.yaml dan kemudian instal.
Setelah ini, cukup impor paket:
impor 'paket: fluttertoast / fluttertoast.dart';
Mirip dengan garis di atas.
Dan kemudian dengan menggunakan kelas FlutterToast Anda dapat menggunakan fluttertoast Anda.
Kamu sudah selesai!!!
sumber
Cukup mudah untuk menampilkan pesan roti panggang dalam Flutter.
Scaffold.of(context).showSnackBar(SnackBar( content: Text("Toast Text Here"), ));
sumber
Anda dapat menggunakan sesuatu seperti FlutterToast
Impor lib
Gunakan seperti di bawah ini
Itu dia..
sumber