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으로 변경 후 사용할 수 있다고 한다.