inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

SkeletonParagraph()에 관한 질문입니다.

343

codefomatter

작성한 질문수 3

0

안녕하세요.

"Skeleton 사용하기"의 강의 내용을 구현하고 있습니다.

pubspec.yaml

dependencies:
  flutter:
    sdk: flutter


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^1.0.6
  dio: ^5.5.0+1
  flutter_secure_storage: ^9.2.2
  json_annotation: ^4.9.0
  retrofit: '>=4.0.0 <5.0.0'
  logger: any  #for logging purpose
  flutter_riverpod: ^2.5.1
  riverpod_annotation: ^2.3.5
  skeletons: ^0.0.3

restaurant_detail_screen.dart에서

import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:skeletons/skeletons.dart';
  return DefaultLayout(
    title: '불타는 떡볶이',
    child: CustomScrollView(
      slivers: [
        renderTop(
          model: state,
        ),
        renderLoading(),

        // if (state is RestaurantDetailModel) renderLabel(),
        // if (state is RestaurantDetailModel)
        //   renderProducts(
        //     products: state.products,
        //   ),
      ],
    ),
  );
}
// SkeletonParagraph Logic
SliverPadding renderLoading() {
  return SliverPadding(
    padding: EdgeInsets.symmetric(
      horizontal: 16.0,
    ),
    sliver: SliverList(
      delegate: SliverChildListDelegate(
        List.generate(
          3,
          (index) => SkeletonParagraph(
            style: SkeletonParagraphStyle(
              lines: 5,
            ),
          ),
        ),
      ),
    ),
  );
}

을 구현하고 재실행하면 다음과 같은 에러가 발생하고 있습니다.

Skeleton용하기

이미지가 작아서 텍스트로 붙여넣었습니다.


Launching lib\main.dart on sdk gphone64 x86 64 in debug mode...

Running Gradle task 'assembleDebug'...

../../../../AppData/Local/Pub/Cache/hosted/pub.dev/skeletons-0.0.3/lib/src/widgets.dart:56:42: Error: The getter 'backgroundColor' isn't defined for the class 'ThemeData'.

- 'ThemeData' is from 'package:flutter/src/material/theme_data.dart' ('/C:/flutter/packages/flutter/lib/src/material/theme_data.dart').

Try correcting the name to the name of an existing getter, or defining a getter or field named 'backgroundColor'.

color: Theme.of(context).backgroundColor,

^^^^^^^^^^^^^^^

../../../../AppData/Local/Pub/Cache/hosted/pub.dev/skeletons-0.0.3/lib/src/widgets.dart💯46: Error: The getter 'backgroundColor' isn't defined for the class 'ThemeData'.

- 'ThemeData' is from 'package:flutter/src/material/theme_data.dart' ('/C:/flutter/packages/flutter/lib/src/material/theme_data.dart').

Try correcting the name to the name of an existing getter, or defining a getter or field named 'backgroundColor'.

color: Theme.of(context).backgroundColor,

^^^^^^^^^^^^^^^

Target kernel_snapshot failed: Exception


여러가지로 찾아보았지만, 해결되지 않았습니다.
이 문제에 대한 해결 방법에 대해 질문을 드립니다.

감사합니다.

 

flutter 하이브리드-앱

답변 2

0

코드팩토리

안녕하세요!

SkeletonParagraph를 아래 패키지로 대체 부탁드립니다.

https://pub.dev/packages/skeletonizer

carbon (53).png

 

위 코드처럼 Skeletonizer에 loading 상태만 입력 해주면 됩니다.

감사합니다!

0

codefomatter

안녕하세요.

SkeletonParagraph 의 구현 부분을 Skeletonizer로 대체하여 코드를 수정하여 정상적으로 작동합니다.

감사합니다.

 

 

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

“skeletons” 라이브러리를 사용 중 'backgroundColor' isn't defined for the class 'ThemeData'와 같은 에러가 발생하면서 backgroundColorThemeData 클래스에 정의되어 있지 않다는 문제를 마주하셨군요. 이 문제는 일반적으로 라이브러리가 현재 Flutter 버전의 ThemeData 클래스와 호환되지 않을 때 발생합니다.

Flutter에서는 시간이 지남에 따라 API와 프로퍼티들이 변경될 수 있으며, 이 경우 backgroundColor 프로퍼티가 더 이상 ThemeData에서 직접 사용되지 않을 수 있습니다. 대신, 테마 데이터에서 배경색을 지정하는 다른 방법을 사용해야 할 수 있습니다. 예를 들어, canvasColor 혹은 scaffoldBackgroundColor와 같은 프로퍼티들을 확인할 수 있습니다.

즉, 본문의 에러를 해결하기 위해서는 라이브러리의 구현 코드를 직접 수정하거나, 라이브러리의 최신 버전이나 다른 대체 라이브러리를 사용하는 방법을 고려해야 할 수 있습니다.

같은 또는 유사한 에러 문제를 다룬 기존 답변으로, 라이브러리의 호환성 문제와 관련해 대체 라이브러리 사용을 제안하는 예시가 있습니다:
- 스켈레톤 사용 불가 - 이 답변에서는 flutter_skeleton_ui라는 대체 라이브러리를 소개하고 있습니다. 특히, 초기화 및 구현 방법에 대해 설명이 들어있으므로 참고하시면 현재 직면하고 계신 문제에 대한 해결책을 찾는 데 도움이 될 수 있습니다.

- [스켈레톤 사용 불가](https://www.inflearn.com/questions/1321589) - 해당 게시글에서는 `flutter_skeleton_ui` 라이브러리를 대신 사용하는 방법을 제안하고 있습니다. 이는 `backgroundColor`가 소스 코드 내부에서 직접 호출되지 않는, 호환성 문제가 적은 대체 라이브러리일 수 있습니다.

또한, Flutter의 변경 사항과 ThemeData 클래스에 대한 최신 문서도 확인해 보시는 것이 좋습니다. Flutter 공식 문서나 API 가이드에서 backgroundColor와 관련된 최신 정보와 권장 사항을 찾을 수 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

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

0

30

0

FlutterSecureStorage 질문

0

31

0

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

0

79

2

관리자 기능에 대한 질문

0

100

2

part 'restaurant_model.g.dart';

0

92

1

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

0

56

2

2번 반환 상황 관련 질문

0

61

2

riverpod 3.0

0

139

2

Asset folder??

0

82

2

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

0

113

2

FutureProvider, StateNotifierProvider 선택 기준

0

70

2

컴포넌트 모델화

0

64

2

쿼리 파라미터

0

84

2

화면 안보임

0

68

2

PaginationListView

0

54

1

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

0

101

2

프로토타입이미지

0

62

2

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

0

84

2

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

0

105

2

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

0

67

2

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

0

106

3

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

0

77

2

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

0

86

2

코딩 작성 순서 관련 질문

0

88

2