I am engaged on a legacy undertaking that I took over. It makes use of auto_route and auto_route_generator to deal with routes. It was beforehand on model 5.x.x and I am am trying to replace it to model 6.0.0 as a result of the app refuses to construct for android with the present model.
After updating each dependancies and utilizing the v6 migration instrument in Android Studio, I ran flutter pub run build_runner construct --delete-conflicting-outputs
and took a have a look at my router.dart and router.gr.dart. I first seen that I had an error for every route in router.dart that appears much like this: Undefined identify 'LoadingRoute'. Strive correcting the identify to at least one that's outlined, or defining the identify.
Once I have a look at router.gr.dart I seen that not one of the routes had been generated. I discovered this submit which looks like the same problem however I wasn’t in a position to remedy it based mostly on the replies. Any assist can be a lot appreciated!
Router.gr.dart:
// GENERATED CODE - DO NOT MODIFY BY HAND
// **************************************************************************
// AutoRouterGenerator
// **************************************************************************
// ignore_for_file: kind=lint
// protection:ignore-file
// ignore_for_file: no_leading_underscores_for_library_prefixes
import 'package deal:auto_route/auto_route.dart' as _i1;
import 'package deal:flutter/materials.dart' as _i2;
summary class $AppRouter extends _i1.RootStackRouter {
$AppRouter([_i2.GlobalKey<_i2.NavigatorState>? navigatorKey])
: tremendous(navigatorKey);
@override
last Map pagesMap = {};
}
`Router.dart:
[all of my imports]
@AutoRouterConfig(
replaceInRouteName: 'Web page,Route',
)
class AppRouter extends $AppRouter {
@override
RouteType get defaultRouteType => RouteType.materials();
@override
last Listing routes = [
CustomRoute(path: "https://stackoverflow.com/", page: LoadingRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600, page: MainRoute.page, children: [
CustomRoute(path: '', page: HomeRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: SettingsRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: AccountPhotoRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: CourseHistoryMasterDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: CourseHistoryDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: ClinicalPlacementHistoryMasterDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: ClinicalPlacementHistoryDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: EducationMasterDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: EducationDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: TimesheetsMasterDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: TimesheetsDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: ContinuingEducationMasterDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: ContinuingEducationDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: WorkHistoryMasterDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: WorkHistoryDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: CPRCertificationsMasterDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: CPRCertificationsDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: ProfessionalCertificationsMasterDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: ProfessionalCertificationsDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: ExamsMasterDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: ExamsDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: StateLicensesMasterDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: StateLicensesDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: MedicalRecordsMasterDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: MedicalRecordsDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: ClinicalDocumentsMasterDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: ClinicalDocumentsDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: ReferencesMasterDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: ReferencesDetailRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: PersonalRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: PositionSpecialtiesRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: AccountRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: LoginAndSecurityRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
AutoRoute(page: DocumentViewRoute.page, fullscreenDialog: true),
], guards: [
AuthGuard
]),
CustomRoute(web page: LoginRoute.web page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(web page: ForgotPasswordRoute.web page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
RedirectRoute(path: '*', redirectTo: "https://stackoverflow.com/"),
CustomRoute(web page: EnterNewPasswordRoute.web page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
RedirectRoute(path: '*', redirectTo: "https://stackoverflow.com/"),
CustomRoute(web page: ForcePasswordResetRoute.web page, path: 'force-password-reset', transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
RedirectRoute(path: '*', redirectTo: "https://stackoverflow.com/"),
];
}
And right here is an instance of one of many pages:
[all of my imports]
@RoutePage()
class LoadingPage extends StatefulWidget {
@override
_LoadingPageState createState() => _LoadingPageState();
}
class _LoadingPageState extends State with SingleTickerProviderStateMixin {
bool animationComplete = false;
OAuthToken? authToken;
late AnimationController _controller;
@override
void initState() {
tremendous.initState();
_controller = AnimationController(length: const Length(milliseconds: 600), vsync: this);
_controller.animateTo(1.0);
loadAnimation();
setup();
}
@override
void dispose() {
_controller.dispose();
logoController?.isActiveChanged.removeListener(animationActive);
tremendous.dispose();
}
Future loadAnimation() async {
var information = await rootBundle.load('property/rive/emblem.riv');
// Load the RiveFile from the binary information.
last file = Rive.RiveFile.import(information);
// The artboard is the basis of the animation and will get drawn within the
// Rive widget.
last artboard = file.mainArtboard;
// Add a controller to play again a recognized animation on the primary/default
// artboard.We retailer a reference to it so we are able to toggle playback.
logoController = Rive.SimpleAnimation('emblem');
logoController!.isActiveChanged.addListener(animationActive);
artboard.addController(logoController!);
setState(() => logoArtboard = artboard);
}
void animationActive() {
if (logoController!.isActive) {
WidgetsBinding.occasion.addPostFrameCallback((_) {
setState(() {
animationComplete = false;
});
});
} else {
WidgetsBinding.occasion.addPostFrameCallback((_) {
setState(() {
animationComplete = true;
});
});
}
}
Future setup() async {
last appState = Supplier.of(context, hear: false);
authenticadedDio.interceptors.add(BearerInterceptor(oauth));
attempt {
await appState.loadPreferences(context);
} catch (e) {
AutoRouter.of(context).exchange(LoginRoute());
}
attempt {
authToken = await oauth.refreshAccessToken();
if (authToken != null && authToken!.accessToken!.isNotEmpty) {
appState.consumer = await UserService.get();
appState.subcontractors = await SubcontractorService.getAll();
}
navigate();
} catch (e) {
if (e is DioError) {
appState.signOut(context);
} else {
FlushbarHelper.createError(message: e.toString()).present(mainContext!);
}
}
}
void delayNavigation() {}
void navigate() {
if (!animationComplete) {
Future.delayed(const Length(milliseconds: 100)).then((v) {
navigate();
});
return;
}
if (authToken != null && authToken!.accessToken!.isNotEmpty) {
AutoRouter.of(context).exchange(MainRoute());
} else {
AutoRouter.of(context).exchange(LoginRoute());
}
}
@override
Widget construct(BuildContext context) {
last darkColorTween = ColorTween(
start: Shade(0xff2a225c),
finish: Shade(0xff2a225c),
).animate(
CurvedAnimation(
curve: Interval(
0.2,
0.9,
curve: Curves.ease,
),
father or mother: _controller,
),
);
last lightColorTween = ColorTween(
start: Shade(0xff2a225c),
finish: Shade(0xff3d6f72),
).animate(
CurvedAnimation(
curve: Interval(
0.2,
0.9,
curve: Curves.ease,
),
father or mother: _controller,
),
);
last opacityAnimation = Tween(
start: 0.0,
finish: 1.0,
).animate(
CurvedAnimation(
curve: Interval(
0.0,
0.4,
curve: Curves.ease,
),
father or mother: _controller,
),
);
return Container(
coloration: Shade(0xff2a225c),
youngster: AnimatedBuilder(
animation: _controller,
builder: (context, youngster) {
return Opacity(
opacity: opacityAnimation.worth,
youngster: Container(
ornament: BoxDecoration(
gradient: LinearGradient(
start: Alignment.centerLeft,
finish: Alignment.bottomRight,
colours: [
darkColorTween.value!,
lightColorTween.value!,
],
// stops: [0, animation.value]
)),
youngster: Middle(
youngster: Padding(
padding: EdgeInsets.solely(left: 40, high: 20, proper: 40, backside: 20),
youngster: SizedBox(
width: (SizerUtil.deviceType == DeviceType.pill) ? 50.w : double.infinity,
youngster: Column(
mainAxisSize: MainAxisSize.min,
kids: [
Hero(
tag: 'logo',
child: logoArtboard == null ? const SizedBox() : Rive.Rive(artboard: logoArtboard!, useArtboardSize: true),
),
Visibility(
maintainState: true,
maintainAnimation: true,
maintainSize: true,
visible: animationComplete,
child: Column(
children: [
SizedBox(height: 40),
CircularProgressIndicator(
valueColor: new AlwaysStoppedAnimation(Theme.of(context).primaryColor),
backgroundColor: Colors.white,
),
],
))
],
),
),
))));
}),
);
// return Container(
// ornament: BoxDecoration(
// gradient: LinearGradient(
// start: Alignment.topCenter,
// finish: Alignment.bottomCenter,
// colours: [
// darkColorTween.value!,
// lightColorTween.value!,
// ],
// // stops: [0, animation.value]
// )),
// youngster: Middle(
// youngster: Padding(
// padding: EdgeInsets.solely(left: 40, high: 20, proper: 40, backside: 20),
// youngster: SizedBox(
// width: (SizerUtil.deviceType == DeviceType.pill)
// ? 50.w
// : double.infinity,
// youngster: Column(
// mainAxisSize: MainAxisSize.min,
// kids: [
// Hero(
// tag: 'logo',
// child: logoArtboard == null
// ? const SizedBox()
// : Rive.Rive(
// artboard: logoArtboard!, useArtboardSize: true),
// ),
// Visibility(
// maintainState: true,
// maintainAnimation: true,
// maintainSize: true,
// visible: animationComplete,
// child: Column(
// children: [
// SizedBox(height: 40),
// CircularProgressIndicator(
// valueColor: new AlwaysStoppedAnimation(
// Theme.of(context).primaryColor),
// backgroundColor: Colors.white,
// ),
// ],
// ))
// ],
// ),
// ),
// )));
}
}