Reputation: 1
I'm working on a legacy project that I took over. It uses auto_route and auto_route_generator to handle routes. It was previously on version 5.x.x and I'm am attempting to update it to version 6.0.0 because the app refuses to build for android with the current version.
After updating both dependancies and using the v6 migration tool in Android Studio, I ran flutter pub run build_runner build --delete-conflicting-outputs
and took a look at my router.dart and router.gr.dart. I first noticed that I had an error for each route in router.dart that looks similar to this: Undefined name 'LoadingRoute'. Try correcting the name to one that is defined, or defining the name.
When I look at router.gr.dart I noticed that none of the routes were generated. I found this post which seems like a similar issue but I wasn't able to solve it based on the replies. Any help would be much appreciated!
Router.gr.dart:
// GENERATED CODE - DO NOT MODIFY BY HAND
// **************************************************************************
// AutoRouterGenerator
// **************************************************************************
// ignore_for_file: type=lint
// coverage:ignore-file
// ignore_for_file: no_leading_underscores_for_library_prefixes
import 'package:auto_route/auto_route.dart' as _i1;
import 'package:flutter/material.dart' as _i2;
abstract class $AppRouter extends _i1.RootStackRouter {
$AppRouter([_i2.GlobalKey<_i2.NavigatorState>? navigatorKey])
: super(navigatorKey);
@override
final Map<String, _i1.PageFactory> pagesMap = {};
}
`Router.dart:
\[all of my imports\]
@AutoRouterConfig(
replaceInRouteName: 'Page,Route',
)
class AppRouter extends $AppRouter {
@override
RouteType get defaultRouteType =\> RouteType.material();
@override
final List\<AutoRoute\> routes = \[
CustomRoute(path: '/', 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(page: LoginRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
CustomRoute(page: ForgotPasswordRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
RedirectRoute(path: '*', redirectTo: '/'),
CustomRoute(page: EnterNewPasswordRoute.page, transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
RedirectRoute(path: '*', redirectTo: '/'),
CustomRoute(page: ForcePasswordResetRoute.page, path: 'force-password-reset', transitionsBuilder: CustomTransitionsBuilders.sharedAxisTrans, durationInMilliseconds: 1200, reverseDurationInMilliseconds: 600),
RedirectRoute(path: '\*', redirectTo: '/'),
\];
}
And here is an example of one of the pages:
[all of my imports]
@RoutePage()
class LoadingPage extends StatefulWidget {
@override
_LoadingPageState createState() => _LoadingPageState();
}
class _LoadingPageState extends State<LoadingPage> with SingleTickerProviderStateMixin {
bool animationComplete = false;
OAuthToken? authToken;
late AnimationController _controller;
@override
void initState() {
super.initState();
_controller = AnimationController(duration: const Duration(milliseconds: 600), vsync: this);
_controller.animateTo(1.0);
loadAnimation();
setup();
}
@override
void dispose() {
_controller.dispose();
logoController?.isActiveChanged.removeListener(animationActive);
super.dispose();
}
Future<void> loadAnimation() async {
var data = await rootBundle.load('assets/rive/logo.riv');
// Load the RiveFile from the binary data.
final file = Rive.RiveFile.import(data);
// The artboard is the root of the animation and gets drawn in the
// Rive widget.
final artboard = file.mainArtboard;
// Add a controller to play back a known animation on the main/default
// artboard.We store a reference to it so we can toggle playback.
logoController = Rive.SimpleAnimation('logo');
logoController!.isActiveChanged.addListener(animationActive);
artboard.addController(logoController!);
setState(() => logoArtboard = artboard);
}
void animationActive() {
if (logoController!.isActive) {
WidgetsBinding.instance.addPostFrameCallback((_) {
setState(() {
animationComplete = false;
});
});
} else {
WidgetsBinding.instance.addPostFrameCallback((_) {
setState(() {
animationComplete = true;
});
});
}
}
Future<void> setup() async {
final appState = Provider.of<AppState>(context, listen: false);
authenticadedDio.interceptors.add(BearerInterceptor(oauth));
try {
await appState.loadPreferences(context);
} catch (e) {
AutoRouter.of(context).replace(LoginRoute());
}
try {
authToken = await oauth.refreshAccessToken();
if (authToken != null && authToken!.accessToken!.isNotEmpty) {
appState.user = await UserService.get();
appState.subcontractors = await SubcontractorService.getAll();
}
navigate();
} catch (e) {
if (e is DioError) {
appState.signOut(context);
} else {
FlushbarHelper.createError(message: e.toString()).show(mainContext!);
}
}
}
void delayNavigation() {}
void navigate() {
if (!animationComplete) {
Future.delayed(const Duration(milliseconds: 100)).then((v) {
navigate();
});
return;
}
if (authToken != null && authToken!.accessToken!.isNotEmpty) {
AutoRouter.of(context).replace(MainRoute());
} else {
AutoRouter.of(context).replace(LoginRoute());
}
}
@override
Widget build(BuildContext context) {
final darkColorTween = ColorTween(
begin: Color(0xff2a225c),
end: Color(0xff2a225c),
).animate(
CurvedAnimation(
curve: Interval(
0.2,
0.9,
curve: Curves.ease,
),
parent: _controller,
),
);
final lightColorTween = ColorTween(
begin: Color(0xff2a225c),
end: Color(0xff3d6f72),
).animate(
CurvedAnimation(
curve: Interval(
0.2,
0.9,
curve: Curves.ease,
),
parent: _controller,
),
);
final opacityAnimation = Tween<double>(
begin: 0.0,
end: 1.0,
).animate(
CurvedAnimation(
curve: Interval(
0.0,
0.4,
curve: Curves.ease,
),
parent: _controller,
),
);
return Container(
color: Color(0xff2a225c),
child: AnimatedBuilder(
animation: _controller,
builder: (context, child) {
return Opacity(
opacity: opacityAnimation.value,
child: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.centerLeft,
end: Alignment.bottomRight,
colors: [
darkColorTween.value!,
lightColorTween.value!,
],
// stops: [0, animation.value]
)),
child: Center(
child: Padding(
padding: EdgeInsets.only(left: 40, top: 20, right: 40, bottom: 20),
child: SizedBox(
width: (SizerUtil.deviceType == DeviceType.tablet) ? 50.w : double.infinity,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
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<Color>(Theme.of(context).primaryColor),
backgroundColor: Colors.white,
),
],
))
],
),
),
))));
}),
);
// return Container(
// decoration: BoxDecoration(
// gradient: LinearGradient(
// begin: Alignment.topCenter,
// end: Alignment.bottomCenter,
// colors: [
// darkColorTween.value!,
// lightColorTween.value!,
// ],
// // stops: [0, animation.value]
// )),
// child: Center(
// child: Padding(
// padding: EdgeInsets.only(left: 40, top: 20, right: 40, bottom: 20),
// child: SizedBox(
// width: (SizerUtil.deviceType == DeviceType.tablet)
// ? 50.w
// : double.infinity,
// child: Column(
// mainAxisSize: MainAxisSize.min,
// children: [
// 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<Color>(
// Theme.of(context).primaryColor),
// backgroundColor: Colors.white,
// ),
// ],
// ))
// ],
// ),
// ),
// )));
}
}
Upvotes: 0
Views: 99