슬라이더로 값 선택하기
Coddy Flutter 여정의 앱에 상호작용 추가하기 섹션에 포함된 레슨. 34개 중 29번째.
Slider는 드래그하여 범위에서 숫자를 선택합니다. 스위치처럼 value:를 표시하고 새 값과 함께 onChanged를 호출합니다.
Slider(
value: _size,
min: 0,
max: 50,
divisions: 5,
onChanged: (double value) {
setState(() {
_size = value;
});
},
)min:과 max:는 양 끝값입니다. divisions:를 지정하면 일정한 간격으로 이동합니다. 0부터 50까지 5개 구간으로 나누면 0, 10, 20, 30, 40, 50이 됩니다. 지정하지 않으면 그 사이의 모든 값을 선택할 수 있습니다. 트랙을 탭해도 해당 위치로 슬라이더가 이동합니다.
값은 항상 double이므로 20.0으로 표시됩니다. _size.round()는 값을 가장 가까운 정수인 int로 반올림하므로 20으로 표시됩니다.
챌린지
쉬움- 슬라이더가 움직이도록 하세요.
setState를 사용해 슬라이더의 값을_volume에 저장하세요. - 슬라이더 아래에 볼륨을 정수로 표시하세요.
Volume: 20으로 표시하고Volume: 20.0으로 표시하지 마세요.
직접 해보기
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
double _volume = 20;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Sound')),
body: Padding(
padding: const EdgeInsets.all(24),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Icon(Icons.volume_up, size: 64),
Slider(
value: _volume,
min: 0,
max: 100,
divisions: 10,
onChanged: (double value) {},
),
Text('Volume: ?', style: const TextStyle(fontSize: 24)),
],
),
),
);
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
앱에 상호작용 추가하기의 모든 레슨
직접 연습해 보세요: 온라인 Flutter 컴파일러