inflearn logo
강의

Khóa học

Chia sẻ kiến thức

[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

626

작성자 없음

0 câu hỏi đã được viết

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

dlckdals9467

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

-1

codefactory

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

Isar 마지막 업데이트는 2년전입니다.

0

26

0

FlutterSecureStorage 질문

0

27

0

Dio onError Interceptor 만드는 부분에 질문이 있습니다.

0

74

2

관리자 기능에 대한 질문

0

96

2

part 'restaurant_model.g.dart';

0

91

1

36강. dio 인터셉터에 storage를 전달하는 코드가 이해 안되는데요. 도움 부탁드립니다.

0

54

2

2번 반환 상황 관련 질문

0

58

2

riverpod 3.0

0

139

2

Asset folder??

0

79

2

디자이너와 협업 시 프레임 크기 설정 관련 질문

0

111

2

FutureProvider, StateNotifierProvider 선택 기준

0

68

2

컴포넌트 모델화

0

61

2

쿼리 파라미터

0

81

2

화면 안보임

0

64

2

PaginationListView

0

50

1

강의중 37.Dio onErrorInterceptor 작업하기 dio 관련 질문입니다.

0

99

2

프로토타입이미지

0

59

2

여러 객체를 상태 관리하는 방법에 대한 질문

0

82

2

장바구니 결제하기 응답이 500이 옵니다.

0

102

2

removeFromBasket에서 await patchBasket()을 마지막에 하면 에러나는거 아닌가요?

0

64

2

이 두가지는 완전히 동일한 기능인가요?

0

104

3

내부 코드를 작성하지 않은 CursorPaginationLoading가 어떻게 로딩상태를 갖는지 잘 모르겠습니다...

0

75

2

_SplashScreenState에서 storage를 late로 호출해서 한번만 불러와도 되나요?

0

82

2

코딩 작성 순서 관련 질문

0

84

2