티스토리 뷰
Flutter
Flutter ) The argument type '...' can't be assigned to the parameter type 'PreferredSizeWidget'.
Zedd0202 2020. 9. 18. 12:21반응형
안녕하세요 :) Zedd입니다.
# 상황
일단 저는 Widget을 극한으로 쪼개고 싶습니다.
class MainWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(appBar: CupertinoNavigationBar(middle: Text("iOS")));
}
}
이것도 좋지만,
저 CupertinoNavigationBar(middle: Text("iOS"))도
하나의 StatelessWidget으로 만들어서 관리하고 싶은 마음입니다.
그래서
class MainWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(appBar: NavigationBar()); //❗️ Error ❗️
}
}
class NavigationBar extends StatelessWidget {
@override
Widget build(BuildContext context) {
return CupertinoNavigationBar(middle: Text("iOS"));
}
}
이런식으로 해줬는데,
The argument type 'NavigationBar' can't be assigned to the parameter type 'PreferredSizeWidget'.
라는 에러가 발생...
# 해결
Scaffold의 정의로 가면 appBar가 PreferredSizeWidget 타입인걸 볼 수 있습니다.
PreferredSizeWidget은 abstract class이고, preferredSize라는 프로퍼티를 요구합니다.
그럼, 제 NavigationBar가 이 PreferredSizeWidget을 구현해주면 되겠네요.
class MainWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(appBar: NavigationBar()); // ✅
}
}
class NavigationBar extends StatelessWidget with PreferredSizeWidget {
@override
Widget build(BuildContext context) {
return CupertinoNavigationBar(middle: Text("iOS"));
}
@override
Size get preferredSize => Size.fromHeight(kToolbarHeight); // ✅
}
kToolbarHeight은 AppBar의 높이를 가지고있는 상수에요.
특정 사이즈를 주고싶다면..
@override
Size get preferredSize => const Size.fromHeight(100);
이런식으로 주면 됩니다.
Q : CupertinoNavigationBar / AppBar 높이가 100이 되는거야?
A : CupertinoNavigationBar의 높이는 변하지 않는 것 같고,
AppBar의 높이만 변하는 것 같습니다.
반응형
'Flutter' 카테고리의 다른 글
Flutter ) 새로운 화면 present/push하기. (Route) (0) | 2020.10.14 |
---|---|
Flutter ) CupertinoNavigationBar에 Item넣는 법 / item이 짤려보이는 현상 해결 (0) | 2020.09.24 |
Flutter ) iOS / Android 플랫폼 구분하는 방법 (0) | 2020.09.18 |
Flutter ) StatefulWidget 자세히 살펴보기 (2) | 2020.09.11 |
Flutter ) StatelessWidget 자세히 살펴보기 (0) | 2020.09.11 |
TAG
- iOS delegate
- swift sort
- swift tutorial
- SwiftUI
- ios 13
- 제이슨 파싱
- actor
- Xcode
- 스위프트
- np-hard
- np-complete
- 스위프트 문법
- swift delegate
- Swift
- Accessibility
- WidgetKit
- WWDC
- UIBezierPath
- swift array
- github
- FLUTTER
- fastlane
- 회고
- Combine
- Git
- IOS
- swift3
- swift 공부
- WKWebView
- 피아노
글 보관함
반응형
- Total
- Today
- Yesterday