pub.dev에 등록되어 있는 Provider 패키지를 내 프로젝트에 추가합니다.
dependencies:
flutter:
sdk: flutter
#provider
provider: ^4.3.2+2 #버전은 최신 버전을 사용하세요.
사용 할 Dart 소스 코드 상단에 Provider 를 추가합니다.
import 'package:provider/provider.dart';
정리가 잘 된 사이트가 있어 링크로 대신한다.
https://reasley.com/?p=2423
ChangeNotifierProvider 생성
아래와 같이 간단한 카운트 Provider를 하나 생성한다. :
import 'package:flutter/material.dart';
class CounterRepository with ChangeNotifier {
int _counter;
CounterRepository(this._counter);
getCounter() => _counter;
setCounter(int counter) => _counter = counter;
void increment() {
_counter++;
notifyListeners();
}
void decrement() {
_counter--;
notifyListeners();
}
}
runApp()에 Multi Provider 선언하기
위에 생성한 Provider를 runApp에 선언한다. :
import 'package:provider/provider.dart';
void main() {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(
create: (_) => CounterRepository(0),
),
],
child: MyApp(),
)
);
}
@override
Widget build(BuildContext context) {
CounterRepository _counterRepository =
Provider.of<CounterRepository>(context);
return Scaffold(
body: Center(
child: Column(
....
children: <Widget>[
....
....
Text(
'${_counterRepository.getCounter()}', //현재 카운트 값
style: Theme.of(context).textTheme.headline4,
),
....
...
),
floatingActionButton: FloatingActionButton(
onPressed: _counterRepository.increment, // 카운트 증가 함
tooltip: 'Increment',
child: Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}