작성
·
928
답변 6
2
go router 5.0.5 기준 MaterialApp.router(routerConfig:_router) 를 적용하여 해결했습니다! 이 경우에는 routeInformationProvider, routeInformationParser, routerDelegate를 할당할 필요가 없는 것 같습니다.
1
저도 ErrorScreen 까지 구현하면서 go가 실행되지 않는 문제를 겪었습니다.
그런데 _router 선언 부분을 수정하니 정상적으로 go 가 실행되네요.
아래 강사님 답변처럼 재시작도 해주시기 바래요.
void main() {
runApp(const _App());
}
// _router 를 다음과 같이 처리하였습니다.
final _router = GoRouter(
initialLocation: '/',
errorBuilder: (context, state) {
return ErrorScreen(error: state.error.toString());
},
routes: [
GoRoute(
path: '/',
builder: (context, state) => HomeScreen(),
routes: [
GoRoute(
name: 'one',
path: 'one',
builder: (context, state) => OneScreen(),
routes: [
GoRoute(
name: 'two',
path: 'two',
builder: (context, state) => TwoScreen(),
routes: [
GoRoute(
name: ThreeScreen.routename,
path: 'three',
builder: (context, state) => ThreeScreen(),
),
],
),
],
),
],
),
],
);
class _App extends StatelessWidget {
const _App({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp.router(
// routerConfig: _router,
debugShowCheckedModeBanner: false,
routeInformationProvider: _router.routeInformationProvider,
routeInformationParser: _router.routeInformationParser,
routerDelegate: _router.routerDelegate,
);
}
}
0
.go가 실행 안 되는 문제 때문에 시간을 좀 보냈네요.
onscommunicationdev 님 댓글을 보고 확인했습니다.
'GoRouter 세팅하기' 강의 따라서 코드 작성하다 4분 32초 시점에,
GoRouter get _router => GoRouter(...
이렇게 구현되어 있었는데, 에러 터지고 편집 시점이 옮겨지면서 코드가 다음과 같이 변경(5분 21초쯤 확인 가능)됩니다.
final GoRouter _router = GoRouter(...
이제 .go가 제대로 작동하군요.
제 버전은 ^5.2.4구요. 도움되시길 바랍니다 :)
0
안녕하세요!
go가 실행되지 않는 경우는 라우트가 등록되지 않은 경우밖에 없는 것 같습니다.
라우트 등록은 Hot Reload로 반영할 수 있는 사항이 아니라 꼭 재시작을 해줘야합니다.
이부분 참고해서 추후 에러가 있을때 반영해보세요!
0
context.push()는 동작해서 context.go() 대신에 context.push()를 사용하려고 하는데 프로젝트 진행에 문제가 없을까요?
별개로 궁금한 점이 있는데, context.go()는 context.push()와 달리 화면이 스택처럼 쌓이는 것이 아니라 그냥 말 그대로 이동이라고 보면 될까요? context.push() 가 Navigator.push()와 사실상 동일하고 context.go()가 Navigator.pushAndRemoveUntil()과 같다고 봐도 되는 지 궁금합니다.
안녕하세요!
작동 방식의 약간의 차이는 있습니다. 예를들어서 go() 함수를 사용할경우 하위 모든 라우트가 푸쉬되고 지정된 Stack이 네비게이션 스택으로 쌓이게되는데
push() 함수의 경우 최근 라우트에 할당한 새로운 라우트를 올리는 작업만 진행합니다.
확인 감사합니다!