[flutter] 플러터 Slider의 값을 다른 페이지로 전달하는 방법은?

먼저, provider 패키지를 pubspec.yaml 파일에 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  provider: ^5.0.0

그런 다음, Slider의 값을 제공하고 해당 값을 사용할 수 있는 Provider 클래스를 작성합니다.

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class SliderProvider extends ChangeNotifier {
  double _sliderValue = 0.0;

  double get sliderValue => _sliderValue;

  void setSliderValue(double value) {
    _sliderValue = value;
    notifyListeners();
  }
}

이제, Slider 위젯을 사용하는 화면에서 SliderProvider를 참조하고 값을 변경할 때마다 값을 업데이트하도록 설정합니다.

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class SliderScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider(
      create: (context) => SliderProvider(),
      child: SliderPage(),
    );
  }
}

class SliderPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var sliderProvider = Provider.of<SliderProvider>(context, listen: false);
    
    return Slider(
      value: sliderProvider.sliderValue,
      onChanged: (newValue) {
        sliderProvider.setSliderValue(newValue);
      },
      min: 0.0,
      max: 100.0,
      divisions: 5,
      label: sliderProvider.sliderValue.round().toString(),
    );
  }
}

마지막으로, 값이 전달될 다른 페이지에서 SliderProvider를 사용하여 값을 가져옵니다.

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class AnotherPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var sliderProvider = Provider.of<SliderProvider>(context);

    return Text('Slider Value: ${sliderProvider.sliderValue}');
  }
}

이제 Slider의 값을 SliderProvider를 통해 다른 페이지로 전달할 수 있습니다.