Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振:RouteAware仅触发didPush事件_Flutter_Flutter Routes - Fatal编程技术网

Flutter 颤振:RouteAware仅触发didPush事件

Flutter 颤振:RouteAware仅触发didPush事件,flutter,flutter-routes,Flutter,Flutter Routes,你好,我是新来的,虽然我已经搜索过这个主题,但我不清楚。下面是代码: main.dart文件 RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>(); void main() async { WidgetsFlutterBinding.ensureInitialized(); await DotEnv().load('.env'); final UserRepository use

你好,我是新来的,虽然我已经搜索过这个主题,但我不清楚。下面是代码:

main.dart文件

RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await DotEnv().load('.env');
  final UserRepository userRepository = new UserRepository();
  runApp(BlocProvider(
    create: (context) => AuthenticationBloc(userRepository)..add(AppStarted()),
    child: App(
      userRepository: userRepository
    ),
  ));
}
RouteObserver RouteObserver=RouteObserver();
void main()异步{
WidgetsFlutterBinding.ensureInitialized();
等待DotEnv().load('.env');
final UserRepository UserRepository=new UserRepository();
runApp(BlocProvider(
创建:(上下文)=>AuthenticationBloc(userRepository)…添加(AppStarted()),
儿童:应用程序(
userRepository:userRepository
),
));
}
profile_form.dart(位于另一个文件中,并从main.dart导入routeObserver)

class ProfileForm扩展StatefulWidget{
最终用户存储库_UserRepository;
最终用户\u用户;
剖面图(
{Key Key、@required UserRepository UserRepository、@required User})
:assert(userRepository!=null&&user!=null),
_userRepository=userRepository,
_用户=用户,
超级(键:键);
State createState()=>_ProfileFormState();
}
类_ProfileFormState使用RouteAware扩展状态{
UserRepository get _UserRepository=>widget.\u UserRepository;
用户获取_User=>widget.\u User;
@凌驾
void initState(){
super.initState();
}
@凌驾
void didChangeDependencies(){
subscribe(这是(上下文)的ModalRoute.of);
super.didChangeDependencies();
}
@凌驾
void didPush(){
打印('didPush FirstPage');
}
@凌驾
void didPopNext(){
打印('didPopNext FirstPage');
}
@凌驾
void didPop(){
打印(“didPop首页”);
}
@凌驾
void didphushnext(){
打印(“下一个第一页”);
}
@凌驾
无效处置(){
印刷品(“dis”);
routeObserver.unsubscribe(此);
super.dispose();
}
}
此表单是通过Navigator.pushreplacementname(上下文“/profile”); 虽然当我返回到另一个页面(再次从Nanigator或back按钮)并等待didPop()事件触发时,didPush()事件的触发器会触发,但不会触发。我错过了什么?我的主要问题是,我想在用户退出配置文件屏幕时,但在进入另一个屏幕的init之前保存更改

class ProfileForm extends StatefulWidget {
  final UserRepository _userRepository;
  final User _user;

  ProfileForm(
      {Key key, @required UserRepository userRepository, @required User user})
      : assert(userRepository != null && user != null),
        _userRepository = userRepository,
        _user = user,
        super(key: key);
  State<ProfileForm> createState() => _ProfileFormState();
}

class _ProfileFormState extends State<ProfileForm> with RouteAware {

  UserRepository get _userRepository => widget._userRepository;
  User get _user => widget._user;

  

  @override
  void initState() {
    super.initState();
  }

  @override
  void didChangeDependencies() {
    routeObserver.subscribe(this, ModalRoute.of(context));
    super.didChangeDependencies();
  }

  @override
  void didPush() {
    print('didPush FirstPage');
  }

  @override
  void didPopNext() {
    print('didPopNext FirstPage');
  }

  @override
  void didPop() {
    print('didPop FirstPage');
  }

  @override
  void didPushNext() {
    print('didPushNext FirstPage');
  }

  @override
  void dispose() {
    print("dis");
    routeObserver.unsubscribe(this);
    super.dispose();
  }
}