Seperti yang Anda lihat tombol saya ada di dalam tubuh Scaffold. Tapi saya mendapatkan pengecualian ini:
Scaffold.of () dipanggil dengan konteks yang tidak mengandung Scaffold.
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomePage(),
);
}
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('SnackBar Playground'),
),
body: Center(
child: RaisedButton(
color: Colors.pink,
textColor: Colors.white,
onPressed: _displaySnackBar(context),
child: Text('Display SnackBar'),
),
),
);
}
}
_displaySnackBar(BuildContext context) {
final snackBar = SnackBar(content: Text('Are you talkin\' to me?'));
Scaffold.of(context).showSnackBar(snackBar);
}
EDIT:
Saya menemukan solusi lain untuk masalah ini. Jika kita memberikan kunci Scaffold yang merupakan GlobalKey, kita dapat menampilkan SnackBar sebagai berikut tanpa perlu membungkus tubuh kita dengan widget Builder. Widget yang mengembalikan Scaffold harus menjadi widget Stateful .:
_scaffoldKey.currentState.showSnackBar(snackbar);