Flutter 使用TextField时颤振中的过渡动画问题

Flutter 使用TextField时颤振中的过渡动画问题,flutter,flutter-animation,Flutter,Flutter Animation,我的过渡动画不适用于包含TextField的页面。 当我删除TextField时,动画可以正常工作。 有人知道怎么回事吗?这是我的滑块动画: class SlideLeftRoute extends PageRouteBuilder { final Widget page; SlideLeftRoute({this.page}) : super( pageBuilder: ( BuildContext context, Animatio

我的过渡动画不适用于包含TextField的页面。 当我删除TextField时,动画可以正常工作。
有人知道怎么回事吗?

这是我的滑块动画:

class SlideLeftRoute extends PageRouteBuilder {
  final Widget page;
  SlideLeftRoute({this.page})
      : super(
    pageBuilder: (
        BuildContext context,
        Animation<double> animation,
        Animation<double> secondaryAnimation,
        ) =>
    page,
    transitionsBuilder: (
        BuildContext context,
        Animation<double> animation,
        Animation<double> secondaryAnimation,
        Widget child,
        ) =>
        SlideTransition(
          position: Tween<Offset>(
            begin: const Offset(1, 0),
            end: Offset.zero,
          ).animate(animation),
          child: child,
        ),
  );
}
这是我的根应用程序:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
      statusBarColor: BanijetColors.PRIMARY,
      statusBarBrightness: Brightness.light,
    ));

    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(
        fontFamily: 'IranSanse',
        primaryColor: Colors.PRIMARY,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: Splash(),
      initialRoute: 'splash',
      onGenerateRoute: (RouteSettings setting) {
        return mapNamesToRoutes(setting);
      },
    );
  }
}
这是mapNamesToRoute函数:

SlideLeftRoute mapNamesToRoutes(RouteSettings setting) {
  Widget destination;

  final requestAuthCubit = sl<RequestAuthCubit>();
  final verifyAuthCubit = sl<VerifyAuthCubit>();

  switch (setting.name) {
    case 'splash':
      destination = Splash();
      break;
    case 'auth/request':
      destination = MultiBlocProvider(providers: [
        BlocProvider(
            create: (_) => InputValidationCubit(
                inputType: InputType.Phone,
                inputValidator: sl<InputValidator>())),
        BlocProvider.value(value: requestAuthCubit)
      ], child: RequestAuthPage());

      break;

    case 'auth/verify':
      final Map<String, Object> bundle = setting.arguments;
      destination = MultiBlocProvider(providers: [
        BlocProvider(
            create: (_) => InputValidationCubit(
                inputType: InputType.VerificationCode,
                inputValidator: sl<InputValidator>())),
        BlocProvider.value(value: requestAuthCubit),
        BlocProvider.value(value: verifyAuthCubit),
        BlocProvider.value(value: sl<TimerCubit>()),
      ], child: VerifyAuthPage(phone: bundle['phone'], expTime: bundle['exp']));
      break;
    default:
      destination = null;
  }

  return SlideLeftRoute(page: destination);
}

你能添加一些代码吗?没有代码就不能得到任何代码idea@BabC我将代码添加到answer@JanviPatel见answer@JanviPatelTextField导致的错误,当我删除它时,动画works@JanviPatel尝试again@JanviPatel你的版本是什么?@JanviPatel通行证是5t4f6k试试again@JanviPatel不,我使用windows,我可以给你一个到repo的链接
SlideLeftRoute mapNamesToRoutes(RouteSettings setting) {
  Widget destination;

  final requestAuthCubit = sl<RequestAuthCubit>();
  final verifyAuthCubit = sl<VerifyAuthCubit>();

  switch (setting.name) {
    case 'splash':
      destination = Splash();
      break;
    case 'auth/request':
      destination = MultiBlocProvider(providers: [
        BlocProvider(
            create: (_) => InputValidationCubit(
                inputType: InputType.Phone,
                inputValidator: sl<InputValidator>())),
        BlocProvider.value(value: requestAuthCubit)
      ], child: RequestAuthPage());

      break;

    case 'auth/verify':
      final Map<String, Object> bundle = setting.arguments;
      destination = MultiBlocProvider(providers: [
        BlocProvider(
            create: (_) => InputValidationCubit(
                inputType: InputType.VerificationCode,
                inputValidator: sl<InputValidator>())),
        BlocProvider.value(value: requestAuthCubit),
        BlocProvider.value(value: verifyAuthCubit),
        BlocProvider.value(value: sl<TimerCubit>()),
      ], child: VerifyAuthPage(phone: bundle['phone'], expTime: bundle['exp']));
      break;
    default:
      destination = null;
  }

  return SlideLeftRoute(page: destination);
}
class Splash extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StatefulWrapper(
        onInit: () async {
          Future.delayed(const Duration(milliseconds: 2000), () {
            Navigator.pushReplacementNamed(context, 'auth/verify',
                arguments: {'phone': '**********', 'exp': 120});
          });
        },
        child: Scaffold(
          body: Container(
            child: Center(child: Text('Splash Screen')
                // child: Text('Splash Screen'),
                ),
          ),
        ));
  }
}