Я нашел решение в другом посте How to Show-snackbar-in-flutter
Я понял, что контекст в Scaffold.of (context) должен быть встроен в Scaffoldвиджет, что означает, что необходимо обернуть Snackbar в другой виджет.Пример кода, подобный этому:
class ShowSnackBarBtn extends StatelessWidget{
@override
Widget build(BuildContext context) {
// TODO: implement build
return new Center(
child: new RaisedButton(
onPressed: () {
final snackBar = new SnackBar(
content: new Text('Yay! A SnackBar!'),
action: new SnackBarAction(
label: 'Undo',
onPressed: () {
// Some code to undo the change!
},
),
);
// Find the Scaffold in the Widget tree and use it to show a SnackBar!
Scaffold.of(context).showSnackBar(snackBar);
},
child: new Text('Show SnackBar'),
)
);
}
}
Тогда в моем случае все, что мне нужно, это поместить этот фрагмент кода в TabBarView
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new DefaultTabController(
length: 3,
child: new Scaffold(
appBar: new AppBar(
bottom: new TabBar(tabs: [
new Tab(icon: new Icon(Icons.home)),
new Tab(icon: new Icon(Icons.favorite)),
new Tab(icon: new Icon(Icons.list))
]),
title: new Text("Tabs Demo"),
),
body: new TabBarView(children: [
new MyHomePage(),
new ShowSnackBarBtn(),
new ShowSnackBarIcon(),
]),
)),
);
}
}
Наконец, извините, что исключение не было 'т отправил.Интересно, почему в Android Studion не отображается консоль входа в систему, соединяющая мой телефон?Однако, когда я отлаживал программу в эмуляторе, в консоли показывалось исключение.