flutter pub add provider
터미널에 코드를 작성하여 provider를 설치하자

터미널에 해당 코드를 입력하면 자동으로 yml에 등록되는것을 볼 수있다.

lib 폴더 내부에 Providers 폴더를 생성해서 store와 같은 전역상태관리를 담당하는 폴더를 구조하자.

나는 관광지에 대한 spot의 이름과, 스팟의 id명을 전역으로 관리할 예정
main.dart에도 전역으로 상태를 관리하기 위해서 NotifierProvider를 작성해주자.

이렇게 runApp 내부에 provider설정을 하면 전역으로 설정이 가능하고, 아래 overrid부분 widget부분에서 설정하게 되면 원하는 부분별로 상태를 관리 가능하다. 나는 전역으로 상태를 관리하기 위해서, 가장 상위에 설정했다.
이제 전역상태하는 변수를 변경시키는 부분을 작성하자.

위젯 build 가장 상위에 ChangenotifierProvider 메소드를 사용해서 Providers에 정의한 RegionNotifier을 create로 생성정의, 이후 child를 안에 화면구성하는 Scaffold 전부를 넣어주자. (Scaffold 내부에 모든 화면구성요소들이 들어감 appbar, body 등..)

해당코드에서 중요한 부분은 151번 부터 보면된다.
Provider.of는 상태를 읽거나 변경하는 관리하는 역할을 담당한다.
listen는 UI 와 상태를 연결하는데, ui의 화면상태를 최신화를 시킬지 말지를 담당한다.
152에서는 상태관리와는 관련이 없는데, 그냥 rid값은 sname과 같은 값을 넣는다는 의미인데,
firstWhere은 Map의 형태일때 rid의 첫번째 값을 넣겠다는 의미
153번에서는 provider에서 정의한것처럼 spot이름과 , rid 값을 매개변수로 사용하므로 설정을 저렇게해준다.

쉬운 예제로 HomeScreen에서 사용해보자.
body 내부에 Center를 통해 중간에 값을 놓고, 내부 값들은 Coloum을 통해 세로로 배정된다.
childern 을 통해서 Consumer를 사용하는데, provider를 사용하기 위한 메서드이다.
Consumer를 사용하려면 3개의 매개변수인 context, Notifer, child를 사용해야한다.
return을 통해서 원하는 전역상태를 사용하면 된다.