Проблема в том, что ваша закусочная имеет продолжительность, и если вы вернетесь к экрану, вы снова увидите этот старый закусочный.
Решение - добавить этот метод перед Навигатором:
Scaffold.of(context).removeCurrentSnackBar();
В вашем случае вы используете scaffoldKey, поэтому переводите его, как вам нужно.Но убедитесь, что вы связываетесь с правым эшафотом.
scaffoldKey.currentState.removeCurrentSnackBar();
Официальная ссылка: https://api.flutter.dev/flutter/material/ScaffoldState/removeCurrentSnackBar.html
Редактировать: О вызове экрана 1 Эшафот внутри экрана 2 Эшафот:
На вашем экране есть помосты.У лесов есть ключи в вашей ситуации, как я вижу.
Допустим, у Screen1 есть ключ screen1Key ScaffoldState.То же самое для Screen2.
Внутри Screen2 вы должны позвонить
screen1Key.currentState.removeCurrentSnackBar();
full example:
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: Screen1(),
));
}
GlobalKey<ScaffoldState> screen1Key = GlobalKey<ScaffoldState>();
GlobalKey<ScaffoldState> screen2Key = GlobalKey<ScaffoldState>();
class Screen1 extends StatefulWidget {
@override
_Screen1State createState() => _Screen1State();
}
class _Screen1State extends State<Screen1> {
@override
Widget build(BuildContext context) {
return Scaffold(
key: screen1Key,
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
RaisedButton(
onPressed: () {
screen1Key.currentState
.showSnackBar(SnackBar(content: Text('Screen 1 SnackBar')));
},
child: Text('Show SnackBar'),
),
RaisedButton(
onPressed: () {
Navigator.push(context, MaterialPageRoute(builder: (context) {
return Screen2();
}));
},
child: Text('Navigate forward'),
),
],
),
),
);
}
}
class Screen2 extends StatefulWidget {
@override
_Screen2State createState() => _Screen2State();
}
class _Screen2State extends State<Screen2> {
@override
Widget build(BuildContext context) {
return Scaffold(
key: screen2Key,
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
RaisedButton(
onPressed: () {
screen2Key.currentState
.showSnackBar(SnackBar(content: Text('Screen 2 SnackBar')));
},
child: Text('Show SnackBar'),
),
RaisedButton(
onPressed: () {
screen1Key.currentState.removeCurrentSnackBar();
Navigator.pop(context);
},
child: Text('Navigate Back'),
),
],
),
),
);
}
}
Надеюсь, я хорошо понимаю вашу проблему.