: IT/Flutter
Collection and Generic
orora
2022. 3. 3. 21:57
반응형
String Interpolation
String name = "jisu";
print("Hi, $name!");
Collection : 데이터들을 모아서 가지고 있는 자료 구조
Generic : Collection이 가지고 있는 데이터들의 데이터 타입을 지정. 코드의 재사용성을 높임
List는 2가지 종류
fixed-length list : 길이가 고정인 리스트 ex) var number = new List(5);
growable list : 가변 길이 리스트 ex) var number = new List(5);
1. 스낵바와 ScaffoldMessenger
import 'package:flutter/material.dart';
void main() {
runApp(App());
}
class App extends StatelessWidget {
const App({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(primarySwatch: Colors.blue), home: Page());
}
}
class Page extends StatelessWidget {
const Page({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Scaffold messenger')),
body: Body(),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.thumb_up),
onPressed: () {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text('Like a new Snack bar'),
duration: Duration(seconds: 5),
action: SnackBarAction(
label: 'Undo',
onPressed: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => ThirdPage()));
},
)));
},
),
);
}
}
class Body extends StatelessWidget {
const Body({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Center(
child: ElevatedButton(
child: Text('Go to the second page'),
onPressed: () {
Navigator.push(
context, MaterialPageRoute(builder: (context) => SecondPage()));
},
));
}
}
class SecondPage extends StatelessWidget {
const SecondPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Second Page')),
body: const Center(
child: Text('좋아요가 추가되었습니다',
style: TextStyle(color: Colors.redAccent, fontSize: 20.0))));
}
}
class ThirdPage extends StatelessWidget {
const ThirdPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return ScaffoldMessenger(
child: Scaffold(
appBar: AppBar(title: Text('Third Page')),
body: Builder(builder: (context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('좋아요를 취소 하시겠습니까?',
style:
TextStyle(color: Colors.redAccent, fontSize: 20.0)),
ElevatedButton(
onPressed: () {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text('좋아요가 취소되었습니다'),
duration: Duration(seconds: 3)));
},
child: Text('취소하기'))
]));
})),
);
}
}
반응형