작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
520
1
gorouter에서 pathparameter를 사용하던중 상품을 클릭하면 detail화면으로 넘어가지 않고 계속 에러가 뜹니다 ㅠ
return PaginationListView(
provider: recipeProvider,
itemBuilder: <RecipeModel>(_,index,recipe){
return GestureDetector(
onTap: (){
context.goNamed(RecipeDetailScreen.routeName,
pathParameters: {
'rid':recipe.recipe_id.toString()
});
},
child: RecipeCard(
recipe_nm: recipe.recipe_nm,
summary: recipe.summary,
nation_nm: recipe.nation_nm,
cooking_time: recipe.cooking_time,
calorie: recipe.calorie,
imgUrl: recipe.image_url,
level: recipe.level_nm
),
);
});
}
위와 같은 코드로 메인 화면을 구성하여 상품을 클릭하면
List<GoRoute> get routes => [
GoRoute(
path: '/',
name: RootTab.routeName,
builder: (_,__) => RootTab(),
routes: [
GoRoute(
path: 'recipe/:rid',
name: RecipeDetailScreen.routeName,
builder: (_,state) => RecipeDetailScreen(
id: state.pathParameters['rid']!,
)
)
]
),
위와 같이 routeprovider에 등록된 'recipe/:rid'로 이동하게 됩니다.
밑에는 detail 화면 입니다.
class RecipeDetailScreen extends ConsumerStatefulWidget {
static get routeName => 'recipeDetail';
final String id;
const RecipeDetailScreen({
required this.id,
Key? key
}) : super(key: key);
@override
ConsumerState<RecipeDetailScreen> createState() => _RecipeDetailScreenState();
}
class _RecipeDetailScreenState extends ConsumerState<RecipeDetailScreen> {
@override
void initState() {
// TODO: implement initState
super.initState();
int refId = int.parse(widget.id);
ref.read(recipeProvider.notifier).getDetail(id: refId);
}
@override
Widget build(BuildContext context) {
final state = ref.watch(recipeDetailProvider(int.parse(widget.id)));
if(state==null) {
return DefaultLayout(
child: Center(
child: CircularProgressIndicator(),
),
);
}
return DefaultLayout(
child: Column(
children:[
Text(
state.recipe_nm,
),
Text(
state.summary,
)
]
)
);
}
}
id 값을 받아오는지 확인하려고 하니 계속 빨간색 에러페이지가 뜹니다.
밑에는 에러내용입니다.
''package:flutter/src/widgets/framework.dart': Failed assertion: line 6405 pos 12: 'renderObject.child == child': is not true.
답변 2
0
-1