जैसा कि आप देख सकते हैं कि मेरा बटन स्कैफोल्ड के शरीर के अंदर है। लेकिन मुझे यह अपवाद मिलता है:
Scaffold.of () एक संदर्भ के साथ कहा जाता है जिसमें एक पाड़ नहीं होता है।
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);
}
संपादित करें:
मुझे इस समस्या का एक और समाधान मिला। यदि हम स्कैफोल्ड को एक कुंजी देते हैं जो GlobalKey है, तो हम SnackBar को बिल्डर विजेट के साथ हमारे शरीर को लपेटने की आवश्यकता के बिना निम्नलिखित प्रदर्शित कर सकते हैं। विजेट जो पाड़ वापस करता है, हालांकि स्टेटफुल विजेट होना चाहिए:
_scaffoldKey.currentState.showSnackBar(snackbar);