这是我的依赖代码。
import 'package:get/get.dart';
import 'movies.dart';
class DiMoviesDetail extends Bindings {
@override
void dependencies() {
Get.lazyPut<MoviesDetailRemoteDatasource>(
() => MoviesDetailRemoteDatasourceImpl(),
fenix: true);
Get.lazyPut<MoviesDetailLocalDatasource>(
() => MoviesDetailLocalDatasourcImp(),
fenix: true);
Get.lazyPut<MoviesDetailRepository>(() => MoviesDetailRepositoryImp(),
fenix: true);
Get.lazyPut(() => MoviesDetailRemote(), fenix: true);
Get.lazyPut(() => MovieDetailLocal(), fenix: true);
Get.lazyPut(() => MoviesDetailUsecase(), fenix: true);
Get.lazyPut(() => MoviesImagesUsecase(), fenix: true);
Get.lazyPut(() => MoviesCollectionDetailUsecase(), fenix: true);
Get.create(() => MoviesDetailController(),);
}
这部分是路线代码。
import 'package:get/get.dart';
import '../../lib.dart';
class RouteManager {
static appRoutes() => [
GetPage(
name: RouteConstants.SPLASH,
bindings: [DiDiscovery(), DiMovieList()],
page: () => const Filmolog(),
),
GetPage(
name: RouteConstants.MOVIEDETAIL,
bindings: [DiMoviesDetail(),],
page: () => const MoviesDetailPage(),
transition: Transition.rightToLeft,
),
];
}
这部分是GetMaterialApp代码。
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return ScreenUtilInit(
designSize: const Size(360, 690),
builder: (context, child) {
return GetMaterialApp(
debugShowCheckedModeBanner: false,
title: 'Filmolog',
translations: LocalizationsApp(),
locale: Get.deviceLocale,
fallbackLocale: const Locale('tr', 'TR'),
theme: getApplicationTheme(),
themeMode: ThemeMode.dark,
localizationsDelegates: const [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: const [
Locale('tr'),
Locale('en'),
],
initialBinding: DiApp(),
initialRoute: RouteConstants.SPLASH,
getPages: RouteManager.appRoutes(),
);
});
}
}
我正在像这样进行转换。
GestureDetector(
child: PosterAndTitleWidget(
posterPath: result[index].posterPath,
releaseDate: result[index].releaseDate,
title: result[index].title,
voteAverage: AppSettings.voteAverageString(
result[index].voteAverage!),
),
onTap: () {
Get.toNamed(RouteConstants.MOVIEDETAIL,
preventDuplicates: false,
arguments: result[index].id!);
},
);
用户来到电影详情页面。在详细信息页面上时,他们再次打开相同的详细信息页面。我对 get.create 没有任何关于此的问题。但是,当用户关闭并重新打开手机屏幕时,之前的电影详细信息会消失,并且会重复显示上次打开的电影详细信息。
我对你的期望是,当用户重新打开手机时,至少应用程序会从根页面(“/”)启动
您可以尝试使用下一个:
class LifecycleEventHandler extends WidgetsBindingObserver {
@override
Future<void> didChangeAppLifecycleState(AppLifecycleState state) async {
switch (state) {
case AppLifecycleState.resumed:
//do something here, for example
Get.offAll(() => Home());
case AppLifecycleState.inactive:
case AppLifecycleState.paused:
case AppLifecycleState.detached:
//do something here:
}
}
}
您应该在 main.dart 或其他地方注册观察者:
WidgetsBinding.instance.addObserver(lifecycleEventHandler);
您还可以创建一个指定的
<bool>
控制器,其状态将在以下情况发生变化:
AppLifecycleState
改变。然后,您可以根据控制器状态在小部件中执行一些 UI/导航逻辑。