Gördüğünüz gibi düğmem Scaffold'un vücudunun içinde. Ama bu istisnayı anlıyorum:
Scaffold.of (), bir İskele içermeyen bir bağlamla çağrılır.
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);
}
DÜZENLE:
Bu soruna başka bir çözüm buldum. Scaffold'a GlobalKey olan bir anahtar verirsek, SnackBar'ı vücudumuzu Builder widget'ı ile sarmaya gerek kalmadan aşağıdaki gibi görüntüleyebiliriz. İskele döndüren widget olsa da durum bilgisi olan widget olmalıdır:
_scaffoldKey.currentState.showSnackBar(snackbar);