scrollController 관련 에러입니다.
이런 식으로에러가 발생하는데 이유를 모르겠네요;;
강사님 깃 들어가서 코드 비교해보기도 하고 에러를 검색해보기도 했는데 아직 해결하지 못했습니다ㅠ
아래는 코드 전문입니다.
import 'package:dusty_dust/component/category_card.dart';
import 'package:dusty_dust/component/hourly_card.dart';
import 'package:dusty_dust/component/main_app_bar.dart';
import 'package:dusty_dust/component/main_drawer.dart';
import 'package:dusty_dust/model/stat_and_status_model.dart';
import 'package:dusty_dust/model/stat_model.dart';
import 'package:dusty_dust/repository/stat_repository.dart';
import 'package:dusty_dust/utils/data_utils.dart';
import 'package:flutter/material.dart';
import '../const/regions.dart';
class HomeScreen extends StatefulWidget {
HomeScreen({super.key});
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
String region = regions[0];
bool isExpanded = true;
ScrollController scrollController = ScrollController();
@override
initState() {
super.initState();
scrollController.addListener(scrollController);
}
@override
dispose() {
scrollController.removeListener(scrollController);
scrollController.dispose();
super.dispose();
}
Future<Map<ItemCode, List<StatModel>>> fetchData() async {
Map<ItemCode, List<StatModel>> stats = {};
List<Future> futures = [];
for (ItemCode itemCode in ItemCode.values) {
futures.add(
StatRepository.fetchData(
itemCode: itemCode,
),
);
}
final results = await Future.wait(futures);
for (int i = 0; i < results.length; i++) {
final key = ItemCode.values[i];
final value = results[i];
stats.addAll({
key: value,
});
}
return stats;
}
scrollListener() {
bool isExpanded = scrollController.offset < 500 - kToolbarHeight;
if (isExpanded != this.isExpanded) {
setState(() {
this.isExpanded = isExpanded;
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
drawer: MainDrawer(
selectedRegion: region,
onRegionTap: (String region) {
setState(() {
this.region = region;
});
Navigator.of(context).pop();
},
),
body: FutureBuilder<Map<ItemCode, List<StatModel>>>(
future: fetchData(),
builder: (context, snapshot) {
if (snapshot.hasError) {
return Center(
child: Text('에러가 있습니다.'),
);
}
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(),
);
}
Map<ItemCode, List<StatModel>> stats = snapshot.data!;
StatModel pm10RecentStat = stats[ItemCode.PM10]![0];
// 미세먼지 최근 데이터의 현재 상태
final status = DataUtils.getStatusFromItemCodeAndValue(
value: pm10RecentStat.seoul,
itemCode: ItemCode.PM10,
);
final ssModel = stats.keys.map((key) {
final value = stats[key]!;
final stat = value[0];
return StatAndStatusModel(
itemCode: key,
status: DataUtils.getStatusFromItemCodeAndValue(
value: stat.getLevelFromRegion(region),
itemCode: key,
),
stat: stat,
);
}).toList();
return Container(
color: status.primaryColor,
child: CustomScrollView(
controller: scrollController,
slivers: [
MainAppBar(
region: region,
stat: pm10RecentStat,
status: status,
dateTime: pm10RecentStat.dataTime,
isExpanded: true,
),
SliverToBoxAdapter(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
CategoryCard(
region: region,
models: ssModel,
darkColor: status.darkColor,
lightColor: status.lightColor,
),
const SizedBox(
height: 16.0,
),
...stats.keys.map((itemCode) {
final stat = stats[itemCode]!;
return Padding(
padding: const EdgeInsets.only(bottom: 16.0),
child: HourlyCard(
darkColor: status.darkColor,
lightColor: status.lightColor,
category: DataUtils.getItemCodeKrString(itemCode: itemCode),
stats: stat,
region: region,
),
);
}).toList(),
],
),
)
],
),
);
}),
);
}
}
답변 2
0
안녕하세요!
제가 파악한게 맞다면 완전 잘못된 값을 입력하고 계십니다.
ScrollController의 listener 함수는 실행할 함수를 입력해줘야합니다. ScrollController를 다시 입력하는 곳이 아닙니다.
아마 scrollListener() 함수를 착각하신게 아닐까요?
감사합니다!
198강 (){onTap(e);}의 이해 돕기
0
26
1
video_call 플러그인 설치후 에러 발생
0
45
1
SDK 안드로이드 설치 질문!
0
60
1
코드팩토리 디스코드 링크 다시 부탁드려요~
0
92
1
Webview를 이용해서 URL 상의 페이지 출력 불가
0
70
1
홈스크린 함수를 함축해서 main.dart에 옮기는 문제
0
55
1
플레이스토어
0
59
1
아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?
0
55
1
가이드라인 질문
0
57
0
emulator 에러 환경설정 뭐가 문제 일까요??
0
76
1
emulator 실행 오류
0
93
3
Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련
0
71
1
pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의
0
43
1
setState()를 호출하지 않으면 build가 실행 안되는 건가요?
0
53
1
video_call 플러그인 설치시 에러문제
0
64
1
children 안의 if 문에서 { } 못쓰는 이유?
0
48
1
이렇게 오류가 떠요
0
63
1
AppBar 사용했는데
0
61
2
[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다
0
56
1
StatefulWidget 실습 에러가 발생합니다.[해결완료]
0
63
1
Video Player 프로젝트에 대한 추가 질문
0
53
0
Row위젯이나 column위젯의 위치는 누가 정하나요??
0
42
1
geolocator 오류때문에 개발진행이 불가능입니다
0
63
1
API 관련 이슈
0
86
2





