Flutter

[Flutter] Store 여러개 & GET 요청 (Provider)

hminor 2023. 8. 14. 14:03

Store 여러개 & GET 요청 (Provider)

  • 우선 CircleAvatar() 위젯을 사용하면 이미지를 동그랗게 생긴 형태로 넣을 수 있다.
CircleAvatar(
	radius: 30,
	backgroundImage: AssetImage("경로")
)
  • Store 여러 개 사용하는 방법
    • 현재까지는 1개의 Store만 사용했기에 ChangeNotifierProvider() 를 사용했는데
    • 이제는 여러 개의 Store를 사용해야 하기에 MultiProvider() 를 사용해야 한다.
void main() {
  runApp(
    MultiProvider(
      providers: [
        ChangeNotifierProvider(create: (c)=>Store1()),
        ChangeNotifierProvider(create: (c)=>Store2())
      ],
      child: MaterialApp(
        theme: style.theme,
        initialRoute: '/',
        routes: {
          '/': (c) => MyApp(),
          '/mypage': (c) => Text('마이 페이지')
        },
        // home: MyApp()
      ),
    )
  );
}
  • Get 요청으로 받아온 데이터를 Store에 담아주는 방법
    • 단순히 Store에서 해당 함수를 작성 후 원하는 곳에서 실행시켜주면 된다.
class Store2 extends ChangeNotifier{
  var getImage = [];
  getData() async{
    var result = await http.get(Uri.parse('https://codingapple1.github.io/app/profile.json'));
    getImage = await jsonDecode(result.body);
    print(getImage);
    notifyListeners();
  }
}
  • 여기서 initState를 사용해서 렌더링 될 때 함수를 실행시키려 했지만 자동완성도 안되고 왜 안 되는걸까해서 찾아보니
    • 현재 사용하고 있는 클래스가 StatelessWidget이어서 StatefullWidget으로 변경 후 사용할 수 있다고 한다.