강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Không có người viết

Bài viết có thông tin người viết đã bị xóa.

[Nhà máy mã] [Trung cấp] Hoạt động rung chuyển! Các kỹ năng cần thiết để trở thành tiền vệ như quản lý trạng thái, quản lý bộ đệm, tạo mã, GoRouter và logic xác thực!

Đi các chức năng được đặt tên

gorouter질문2

Viết

·

619

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.

 

flutter하이브리드-앱

Câu trả lời 2

0

https://github.com/changmin2/RecipeApp 깃허브 링크 같이 올립니다

-1

codefactory님의 프로필 이미지
codefactory
Người chia sẻ kiến thức

안녕하세요. 로그인을 할 수 없어서 볼수가 없네요.

Không có người viết

Bài viết có thông tin người viết đã bị xóa.

Đặt câu hỏi