14일차 과제 링크 👉 14일차 과제
패키지 이름, 버전 옆 복사하기 아이콘 클릭 후 pubspec.yaml 파일의 dependencies에 등록해서 사용
pubspec.yaml
dependencies에 등록 후
상단 Pub get 클릭하면 설치 완료
english_words: ^4.0.0
nouns.take(50).forEach(print);
단어 50개 출력import 'package:english_words/english_words.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
Widget build(BuildContext context) {
nouns.take(50).forEach(print);
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('단어 보여주기'),
),
body: ListView.builder(
itemCount: nouns.length,
itemBuilder: (context, index) {
return Text(nouns[index]);
}
),
),
);
}
}
animate_do: ^3.0.2
import 'package:animate_do/animate_do.dart';
import 'package:english_words/english_words.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('단어 보여주기'),
),
body: PageView.builder(
itemCount: nouns.length,
// 각 페이지를 넘길 때마다 Text가 zoom in 되면서 나타남
itemBuilder: (context, index) => ZoomIn(
// 애니메이션 속도
duration: Duration(milliseconds: 1500),
child: Center(
child: Text(nouns[index], style: TextStyle(fontWeight: FontWeight.bold, fontSize: 36),)
)
),
),
),
);
}
}
badges: ^3.0.3
import 'package:badges/badges.dart';
import 'package:flutter/material.dart';
....
Badge(
// Badge 안에 표시할 위젯
badgeContent: Text('A'),
// Badge 위치
position: BadgePosition.topEnd(),
child: Text(
nouns[index],
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 36),
)
)
fluttertoast: ^8.2.1
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
...
TextButton(
onPressed: () {
Fluttertoast.showToast(
msg: nouns[index],
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
timeInSecForIosWeb: 1,
backgroundColor: Colors.red,
textColor: Colors.white,
fontSize: 16.0
);
},
child: Text('버튼')
),
font_awesome_flutter: ^10.4.0
font_awesome_flutter
를 사용하면 앱에서 이 아이콘들을 사용할 수 있음import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
...
FaIcon(FontAwesomeIcons.airbnb)
animated_bottom_navigation_bar: ^1.2.0
import 'package:animate_do/animate_do.dart';
import 'package:animated_bottom_navigation_bar/animated_bottom_navigation_bar.dart';
import 'package:badges/badges.dart';
import 'package:english_words/english_words.dart';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
Widget build(BuildContext context) {
var pageController = PageController();
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('단어 보여주기'),
),
body: PageView.builder(
controller: pageController,
itemCount: nouns.length,
itemBuilder: (context, index) => ZoomIn(
duration: Duration(milliseconds: 1500),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Badge(
// Badge 안에 표시할 위젯
badgeContent: Text('A'),
// Badge 위치
position: BadgePosition.topEnd(),
child: Text(
nouns[index],
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 36),
)
),
IconButton(
onPressed: () {
Fluttertoast.showToast(
msg: nouns[index],
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
timeInSecForIosWeb: 1,
backgroundColor: Colors.red,
textColor: Colors.white,
fontSize: 16.0
);
},
icon: FaIcon(FontAwesomeIcons.airbnb)
),
],
)
)
),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
pageController.nextPage(duration: Duration(milliseconds: 300), curve: Curves.bounceOut);
},
backgroundColor: Colors.amber,
child: Icon(Icons.navigate_next),
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
bottomNavigationBar: AnimatedBottomNavigationBar(
backgroundColor: Colors.amber,
icons: [
FontAwesomeIcons.airbnb,
FontAwesomeIcons.facebook,
],
activeIndex: 1,
gapLocation: GapLocation.center,
onTap: (_) {
print(_);
},
),
),
);
}
}