โช flutter / firebase ์ฐ๋ํ๊ธฐ ํ๋ฌํฐ์ firebase๋ฅผ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ด ํธ์
๋๋ค. ๊ทธ๋ฐ๋ฐ, ์ ์ค๋ ๊ฑธ๋ ธ์ต๋๋ค ๐ firebase ์ฝ์์์ ์๋๋ก์ดํธ ํ๋ก์ ํธ๋ฅผ ์๋ก ๋ง๋ค์ด์ฃผ๊ณ flutter ํ์ผ๋ก ๋์์์ app ํด๋์์ build.gradle ํ์ผ์ ํ์ํ ์ ๋ณด๋ค์ ๋ฃ์ด์ฃผ๋ฉด ๋ฉ๋๋ค. firebase๋ฌธ์ ๊ฐ ์์ธํ๊ฒ ์ค๋ช
ํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ด๋ ค์ธ๊ฒ ์์ต๋๋ค. ๋ชจ๋ ํ์ผ๋ค ์
๋ฐ์ดํธ๋ฅผ ๋๋ด๊ณ ์ค๋ฅ๋ฉ์ธ์ง๋ฅผ ๋ง๋ฌ๋๋ฐ, flutter sdk๋ฒ์ ผ๊ณผ firebase ๋ฒ์ ผ์ด ์ํธ๊ฐ ์ ๋์์์ต๋๋ค. ์ด๋ด๋ android > app > build.gradle ํ์ผ์ midSdkVersion๊ณผ targetSdkVersion์ ์๋์ ๊ฐ์ด ๋ฃ์ด์ฃผ๋ฉด ๋ฉ๋๋ค. ์ซ์๋ง ๋ํด์ฃผ๋ฉด ๋๋๋ฐ ์ ๊ทธ๊ฑธ ๋ชจ๋ฅด๊ณ ์์ฒญ ํด๋งธ..
๊ฐ๋ฐ/Flutter
ํ๋ฌํฐ์์๋ route๋ผ๋ ๊ฐ๋
์ผ๋ก ํ์ด์ง ์ด๋์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด ๋ ์ด๋ํ ๊ณณ์ page๋ผ๊ณ ์๊ฐํด์ฃผ๋ฉด ๋ฉ๋๋ค. ๊ตณ์ด ํ์ผ์ ๋ฐ๋ก ๋๋์ง ์์๋ ๊ฐ์ ํ์ผ ์์์ page๋ง ๋๋ ์ฃผ๋ฉด ๋ฉ๋๋ค. ์ฐธ ์ฝ์ฃต? ๐ ์ด๋ ํ ๋ ์ฐ๋ ๊ฒ์ผ๋ก๋ Navagator ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค. main.dart Container( margin: EdgeInsets.only(top: 100, left: 0), width: 100, child: IconButton( icon: Text('Signup', style: TextStyle(fontSize: 20),), onPressed: (){ Navigator.push(context, MaterialPageRoute(builder: (context) => SignUpPage(..
๋ฐ๋ณต๋๋ ๋ถ๋ถ์ ์์ ์ฐ์ง ์๊ณ ๋ฐ๋ณตํด์ ๋ง๋ค ์ ์๋ค. ์ด ๋ ์ธ ์ ์๋ ๊ฒ์ด ListView.builder ์ด๋ค. โพ Example ์ง๊ธ๋ถํฐ ๋ง๋ค์ด ๋ณผ ๋ถ๋ถ์ธ๋ฐ ๋ณด๋ผ์์ด list_view๋ถ๋ถ์ด๊ณ icons๊ฐ ํ๋์๋ถ๋ถ์ด๋ค โพ Code list_view์ ๋ฐ๋ณต๋๋ ๋ถ๋ถ์ ๋ฐ๋ก ํ์ผ(icons.dart)๋ก ๋นผ์ ๋ํ๋๊ฑฐ๋ค. list_view.dart Container( margin: EdgeInsets.only(top: 10, bottom: 20), child: Text('${descList[index]}'), ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( '${majorList[index]}', style: T..
ํ๋ฌํฐ๋ก ์ฝ๋๋ฅผ ์ ์ด๋ด๋ ค๊ฐ ๋๋ฉด ๊ณ์ํด์ ๋ณด๊ฒ๋๋ ๋จ์ด, BuildContext ... ๊ทธ๋ฅ ๋จ์ํ๊ฒ context๋ผ๋ ์ด๋ค ์ธ์๋ฅผ ๋ฐ๋ ๋ฉ์๋๋ผ๊ณ ์๊ฐํ๋๋ฐ, ์ฝ๋ฉ์
ฐํ๋์ด ์ฌ๊ธฐ์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ๊ฐ์๋ฅผ ๋ง๋์
จ๋ค. ์ฌ์ ํ ์ ์ดํด๋ ์ ๋์ง๋ง ์ฝ๋ฉ์
ฐํ๋์ ์ด์ผ๊ธฐ๋ฅผ ๊ฐ๋จํ๊ฒ ์์ฝํด๋ณด์๋ค โพ A handle to the location of a widget in the widget tree ์์ ฏ ํธ๋ฆฌ์์ ํ์ฌ ์์ ฏ์ ์์น๋ฅผ ์ ์ ์๋ ์ ๋ณด ๋ชจ๋ Widget์ BuildMethod๋ฅผ ๊ฐ์ง๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์ ฏ์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. Buildmethod๋ scaffold๋ฅผ ๋ฆฌํดํ๋๋ฐ context(์ธ์๊ฐ)์ ๋ฃ์ด์ ํ๋ค. โพ Each widget has its own BuildContext, which b..
โพ ์์ฑ๋ชจ์ต ์์ ์์ด์ฝ์ ๋ฃ์ด์ ๋ง๋ ๋ฉ๋ด์ ํ๋ฒ๊ฑฐ ๋ฒํผ์ ๋๋ ์ ๋ ์ฌ์ด๋๋ก ์ด๋ฆฌ๋ ๋ฉ๋ด๋ฅผ ๋ง๋ค์์ต๋๋ค! flutter์์๋ drawer์ด๋ผ๋ ๊ฒ์ผ๋ก ์ฝ๊ฒ ๋ง๋ค ์ ๊ฐ ์๋ต๋๋ค! โพ ๊ธฐ๋ณธ ๊ตฌ์ฑ drawer ์ ๋ง๋ค๊ณ , ๊ทธ ์์ ์์ ์์ ฏ(child)์ผ๋ก ListView๋ฅผ ๋ง๋ค์ด์ค๋๋ค. ๊ทธ ์์ ์์ ฏ ์์ ๋ ๋ค๋ฅธ ํ์ ์์ ฏ(children)์ ์์ฑํด์ค๋๋ค. ListView๋ ๋๊ฐ์ง๋ก ๊ตฌ์ฑ์ด ๋ฉ๋๋ค. ์ผ๋จ Header๋ถ๋ถ์์ ๊ณ์ ์ด๋ฆ, ํ๋กํ ์ฌ์ง ๋ฑ์ ๋ฃ์ด์ฃผ๊ณ , ๋ค๋ฅธ ํ์ด์ง๋ก ๋์ด๊ฐ ์ ์๋ ๋ฉ๋ด๋ฅผ ListTile์ด๋ผ๋ ์ด๋ฆ ์๋ ์์ฑํด์ค๋๋ค ListTile๊ตฌ์ฑ์ ๋ณด์๋ฉด onTap์ด ์๋๋ฐ, ์ด ๋ถ๋ถ์ ๋์ค์ ๊ฐ๋ฉด ๋ ๊น๊ฒ ๊ณต๋ถํ ์์ ์ด์ง๋ง ๊ฐ๋จํ๊ฒ onPressed์ ๋น๊ตํด๋ณด์๋ฉด onPressed๋..
โพ ์์ฑ ๋ชจ์ต โพ code class Grade extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.amber[800], appBar: AppBar( title: Text('BBANTO'), centerTitle: true, backgroundColor: Colors.amber[700], elevation: 0.0, //left side leading: IconButton( icon: Icon(Icons.menu), onPressed: () { print('menu button is clicked'); }, ), actions: [ IconButton( ..
1. Flutter์์ ์์ ฏ์ด๋? UI๋ฅผ ๋ง๋ค๊ณ ๊ตฌ์ฑํ๋ ๋ชจ๋ ๊ธฐ๋ณธ ๋จ์ ์์๋ฅผ ์์ ฏ์ด๋ผ๊ณ ํฉ๋๋ค. ๋์ ๋ณด์ด๋ ์์๋ฟ๋ง ์๋๋ผ ๋ณด์ด์ง ์๋ ์์๋ค๊น์ง๋ ์์ ฏ์ด๋ผ๊ณ ํฉ๋๋ค. ํ๋ง๋๋ก Eveything is Widget. 2. ์์ ฏ ํ์
Stateless widget ์ํ๊ฐ ์๋ ์ ์ ์ธ ์์ ฏ์ ๋ปํฉ๋๋ค. ์คํฌ๋ฆฐ์์ ์กด์ฌ๋ ํ์ง๋ง ์๋ฌด๊ฒ๋ ๊ฐ์ง์ง ์๊ณ , ์ค์๊ฐ ๋ฐ์ดํฐ ์ ์ฅ์ ๋ชปํ๋ ์์ ฏ์
๋๋ค. ์ด๋ ํ ์ํฑ๋ฅผ ์ ๋ฐํ๋ value ๊ฐ๋ ๊ฐ์ง์ง ์๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด์ image, text Stateful widget ์ด๋ค ์ํ๋ฅผ ๊ฐ์ง๊ณ ๊ณ์ ์์ง์์ด๋ ๋ณํ๊ฐ ์๋ ์์ ฏ ์ฌ์ฉ์ ์ธํฐ๋์
์ ๋ฐ๋ผ์ ๋ฌ๋ผ์ง๋ ์์ ฏ์
๋๋ค. ์๋ฅผ ๋ค๋ฉด input, checkbox 3. ์์ ฏ ๊ตฌ์ฑ(ํธ๋ฆฌ) ์์ ์ค๋ช
์ฒ๋ผ ๋ง์ ์์๋ค์ด ์..