5주차 플러터 스터디에서는 플러터 튜토리얼 영상을 #18에서 #22까지 학습하였습니다.
(밑의 코드 언어는 모두 Dart입니다.)
영상 주소 : https://www.youtube.com/playlist?list=PL4cUxeGkcC9jLYyp2Aoh6hcWuxFDX6PBJ
#18. Custom Classes
import 'package:flutter/material.dart';
void main() => runApp(materialApp(
home : QuoteList(),
));//materialApp
class QuoteList extends StatefulWidget{
@override
_QuoteListState createState()=> _QuoteListstate();
}
class _QuoteListState extends State<QuoteList>{
List<String> quotes=[
'문장1',
'문장2',
'문장3'
];
//List<String> authoes=['']-> 아렇게 하지 않고 lib폴더에서 quote.dart 클래스를 새로 생성하고 거기에코드를 작성한다..
@override
Widget build(BuildContext context){
return Scaffold(
backgroundColor: Colors.gray[200],
appBar :AppBar(
title : Text('Awesome Quotes'),
centerTitle : true,
backgroundColor : Colors.redAccent,
),//AppBar
body : Column(
children:quotes.map((quote) => Text(quote)).toList(),
),//Column
);//Scaffold
}
}
import 'package:flutter/material.dart';
void main() => runApp(materialApp(
home : QuoteList(),
));//materialApp
class QuoteList extends StatefulWidget{
@override
_QuoteListState createState()=> _QuoteListstate();
}
class _QuoteListState extends State<QuoteList>{
List<String> quotes=[
'문장1',
'문장2',
'문장3'
];
//List<String> authoes=['']-> 아렇게 하지 않고 lib폴더에서 quote.dart 클래스를 새로 생성하고 거기에코드를 작성한다..
@override
Widget build(BuildContext context){
return Scaffold(
backgroundColor: Colors.gray[200],
appBar :AppBar(
title : Text('Awesome Quotes'),
centerTitle : true,
backgroundColor : Colors.redAccent,
),//AppBar
body : Column(
children:quotes.map((quote) => Text(quote)).toList(),
),//Column
);//Scaffold
}
}
//quote.dart를 작성하고 main.dart에 import한 코드
import 'package:flutter/material.dart';
import 'quote.dart';
void main() => runApp(materialApp(
home : QuoteList(),
));//materialApp
class QuoteList extends StatefulWidget{
@override
_QuoteListState createState()=> _QuoteListstate();
}
class _QuoteListState extends State<QuoteList>{
List<Quote> quotes=[
Quote(author: 'oscar wilde', text : '문장1'),
Quote(author: 'oscar wilde', text : '문장2'),
Quote(author: 'oscar wilde', text : '문장3'),
];
//List<String> authoes=['']-> 아렇게 하지 않고 lib폴더에서 quote.dart 클래스를 새로 생성하고 거기에코드를 작성한다..
@override
Widget build(BuildContext context){
return Scaffold(
backgroundColor: Colors.gray[200],
appBar :AppBar(
title : Text('Awesome Quotes'),
centerTitle : true,
backgroundColor : Colors.redAccent,
),//AppBar
body : Column(
children:quotes.map((quote) => Text('${quote.text} - ${quote.author}')).toList(),
),//Column
);//Scaffold
}
}
#19. Cards
//quote.dart를 작성하고 main.dart에 import한 코드
import 'package:flutter/material.dart';
import 'quote.dart';
void main() => runApp(materialApp(
home : QuoteList(),
));//materialApp
class QuoteList extends StatefulWidget{
@override
_QuoteListState createState()=> _QuoteListstate();
}
class _QuoteListState extends State<QuoteList>{
List<Quote> quotes=[
Quote(author: 'oscar wilde', text : '문장1'),
Quote(author: 'oscar wilde', text : '문장2'),
Quote(author: 'oscar wilde', text : '문장3'),
];
Widget quoteTemplate(quote){
return Card(
margin:EdgeInsets.fromLTRB(16.0,16.0,16.0,0.0),
chile :Column(
childeren: <Widget>[
Text(
quote.text
style.TextStyle(
fontSize:18.0,
color:Color.grey[600],
)//TextStyle
),//Text
SixzedBox(height:6.0),
Text(
quote.text
style.TextStyle(
fontSize:14.0,
color:Color.grey[600],
),//Text
];//<Widget>[]
),//Column
);//Card
};
@override
Widget build(BuildContext context){
return Scaffold(
backgroundColor: Colors.gray[200],
appBar :AppBar(
title : Text('Awesome Quotes'),
centerTitle : true,
backgroundColor : Colors.redAccent,
),//AppBar
body : Column(
children:quotes.map((quote) => quoteTemplate(quote)).toList(),
),//Column
);//Scaffold
}
}
#20. Extracting Widgets
//quote.dart를 작성하고 main.dart에 import한 코드
import 'package:flutter/material.dart';
import 'quote.dart';
void main() => runApp(materialApp(
home : QuoteCard(),
));//materialApp
class QuoteCard extends StatefulWidget{
@override
_QuoteListState createState()=> _QuoteListstate();
}
class _QuoteListState extends State<QuoteList>{
List<Quote> quotes=[
Quote(author: 'oscar wilde', text : '문장1'),
Quote(author: 'oscar wilde', text : '문장2'),
Quote(author: 'oscar wilde', text : '문장3'),
];
/*
Widget quoteTemplate(quote){
return QuoteCard(quote : quote);//name파라미터로 전달
}
*/
@override
Widget build(BuildContext context){
return Scaffold(
backgroundColor: Colors.gray[200],
appBar :AppBar(
title : Text('Awesome Quotes'),
centerTitle : true,
backgroundColor : Colors.redAccent,
),//AppBar
body : Column(
//children:quotes.map((quote) => quoteTemplate(quote)).toList(),
children:quotes.map((quote) => QuoteCard(quote : quote).toList(),
//->위에 있던 Widget quoteTemplate를 삭제하면서 QuoteCard(quote : quote)를 이용하여 코드를 더 간결하게 만들음.
),//Column
);//Scaffold
}
}
class QuoteCard extends StatelessWidget{
final Quote quote; //final을 써서 변하지 않음
Quote({this.quote});
/*
const QuoteCard({
Key key,
}) : super(key: key);
*/
@override
Widget build(BuildContext context){
return Card(
margin:EdgeInsets.fromLTRB(16.0,16.0,16.0,0.0),
chile :Column(
childeren: <Widget>[
Text(
quote.text
style.TextStyle(
fontSize:18.0,
color:Color.grey[600],
)//TextStyle
),//Text
SixzedBox(height:6.0),
Text(
quote.text,
style.TextStyle(
fontSize:14.0,
color:Color.grey[600],
),//Text
];//<Widget>[]
),//Column
);//Card
};
}
//quote_card.dart파일을 새로 만들음
import 'package:flutter/material.dart';
import 'quote.dart';
class QuoteCard extends StatelessWidget{
final Quote quote; //final을 써서 변하지 않음
Quote({this.quote});
/*
const QuoteCard({
Key key,
}) : super(key: key);
*/
@override
Widget build(BuildContext context){
return Card(
margin:EdgeInsets.fromLTRB(16.0,16.0,16.0,0.0),
chile :Column(
childeren: <Widget>[
Text(
quote.text
style.TextStyle(
fontSize:18.0,
color:Color.grey[600],
)//TextStyle
),//Text
SixzedBox(height:6.0),
Text(
quote.text,
style.TextStyle(
fontSize:14.0,
color:Color.grey[600],
),//Text
];//<Widget>[]
),//Column
);//Card
};
}
#21. Functions as Parameters
//quote_card.dart
import 'package:flutter/material.dart';
import 'quote.dart';
class QuoteCard extends StatelessWidget{
final Quote quote; //final을 써서 변하지 않음
final Function delete;
Quote({this.quote,this.delate});
/*
const QuoteCard({
Key key,
}) : super(key: key);
*/
@override
Widget build(BuildContext context){
return Card(
margin:EdgeInsets.fromLTRB(16.0,16.0,16.0,0.0),
chile :Column(
childeren: <Widget>[
Text(
quote.text
style.TextStyle(
fontSize:18.0,
color:Color.grey[600],
)//TextStyle
),//Text
SixzedBox(height:6.0),
Text(
quote.text,
style.TextStyle(
fontSize:14.0,
color:Color.grey[600],
),//Text
SixzedBox(height:8.0),
FlatButton.icon(
onPressed : delete,
label:Text('delete quote'),
icon: Icon(Icons.delete),
)//FlatButton.icon
];//<Widget>[]
),//Column
);//Card
};
}
//main.dart
import 'package:flutter/material.dart';
import 'quote.dart';
void main() => runApp(materialApp(
home : QuoteCard(),
));//materialApp
class QuoteCard extends StatefulWidget{
@override
_QuoteListState createState()=> _QuoteListstate();
}
class _QuoteListState extends State<QuoteList>{
List<Quote> quotes=[
Quote(author: 'oscar wilde', text : '문장1'),
Quote(author: 'oscar wilde', text : '문장2'),
Quote(author: 'oscar wilde', text : '문장3'),
];
/*
Widget quoteTemplate(quote){
return QuoteCard(quote : quote);//name파라미터로 전달
}
*/
@override
Widget build(BuildContext context){
return Scaffold(
backgroundColor: Colors.gray[200],
appBar :AppBar(
title : Text('Awesome Quotes'),
centerTitle : true,
backgroundColor : Colors.redAccent,
),//AppBar
body : Column(
//children:quotes.map((quote) => quoteTemplate(quote)).toList(),
children:quotes.map((quote) => QuoteCard(
quote : quote,
delete : (){
setState((){
quotes.remove(quote);
});
};
)).toList(),
//->위에 있던 Widget quoteTemplate를 삭제하면서 QuoteCard(quote : quote)를 이용하여 코드를 더 간결하게 만들음.
),//Column
);//Scaffold
}
}
class QuoteCard extends StatelessWidget{
final Quote quote; //final을 써서 변하지 않음
Quote({this.quote});
/*
const QuoteCard({
Key key,
}) : super(key: key);
*/
@override
Widget build(BuildContext context){
return Card(
margin:EdgeInsets.fromLTRB(16.0,16.0,16.0,0.0),
chile :Column(
childeren: <Widget>[
Text(
quote.text
style.TextStyle(
fontSize:18.0,
color:Color.grey[600],
)//TextStyle
),//Text
SixzedBox(height:6.0),
Text(
quote.text,
style.TextStyle(
fontSize:14.0,
color:Color.grey[600],
),//Text
];//<Widget>[]
),//Column
);//Card
};
}
#22. Starting the World Time App
//main.dart
import 'package:flutter/material.dart';
import 'package:world_time/pages/home.dart';
import'pages/home.dart';
void main()=> runApp(MaterialApp(
home: Home(),
));//MaterialApp
// ./pages/home.dart
import 'package : flutter/material.dart';
class Home extends StatefulWidget{
@override
_HomeStste createState()=> _HomeState();
}
class _HomeState extends State<Home>{
@override
Widget build(BuildContext context){
return Scaffold(
body: SafeArea(child: Text('Home Screen')),
);//Scaffold
}
}
// ./pages/choose_location.dart
import 'package : flutter/material.dart';
class ChooseLocation extends StatefulWidget{
@override
_ChooseLocationStste createState()=> _ChooseLocationState();
}
class _ChooseLocationState extends State<ChooseLocation>{
@override
Widget build(BuildContext context){
return Scaffold(
body: Text('choose location screen'),
);//Scaffold
}
}
// ./pages/loading.dart
import 'package : flutter/material.dart';
class Loading extends StatefulWidget{
@override
_LoadingStste createState()=> _LoadingState();
}
class _LoadingState extends State<Loading>{
@override
Widget build(BuildContext context){
return Scaffold(
body: Text('loading Screen'),
);//Scaffold
}
}
'3-2기 스터디 > 플러터' 카테고리의 다른 글
[7주차] 튜토리얼 영상 #23-26 (0) | 2022.06.25 |
---|---|
[6주차] Codelab - Basic Flutter layout concepts (0) | 2022.06.23 |
[4주차] 튜토리얼 영상 #15-17 (0) | 2022.05.23 |
[3주차] 튜토리얼 영상 #8-#14 (0) | 2022.05.03 |
[2주차] 튜토리얼 영상 #4-#7 (0) | 2022.04.08 |
댓글