반응형
출처 -[플러터] Todo-App 만들기 (velog.io)
[플러터] Todo-App 만들기
🌈 간단한 Todo-list 만들기 ☀️ 1. 프로젝트 생성하기 프로젝트 생성 후, home에 todoApp()을 호출한다. todoApp은 상태값이 변하므로, Stateful 위젯을 사용한다. StatefulWidget을 상속받는 todoApp 클래스를
velog.io
1. 함수 읽기
todo어플도 상태값이 변하니까 Sateful 위젯을 사용
todoApp stateful 상속 위젯 생성
"+ "아이콘을 앱바에 생성 -> 클릭 하면 다이얼로그 showDialog(); -> return값 AlertDialog 2칸의 텍스트필드 -> (hint)1. 글 제목, 2. 글 내용 입력
저장하기
Todo class 생성
위와 같이 클래스를 만들어 주자 final을 통해 title, description 을 선언하고, Todo클래스의 생성자를 생선한다.
Todo 클래스를 만드는 이유는 TextField에서 입력받은 값들을 저장하기 위해 만든 것
2. 디자인 읽기
전체적인 리스트 뷰
Inkwell 클릭이벤트 만들어주기
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const todoApp(),
);
}
}
class Todo {
final String title;
final String description;
Todo({required this.title, required this.description});
}
class todoApp extends StatefulWidget {
const todoApp({Key? key}) : super(key: key);
@override
State<todoApp> createState() => _todoApp();
}
class _todoApp extends State<todoApp> {
String title = "";
String description = "";
List<Todo> todos = [];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: Image.asset("assets/avartar.jpeg", fit: BoxFit.fill),
title: Text("todo - list"),
actions: [
IconButton(
onPressed: () {
showDialog(
context: context,
builder: (_) {
return AlertDialog(
title: const Text('나의 할일'),
actions: [
TextField(
onChanged: (value) {
setState(() {
title = value;
});
},
decoration: InputDecoration(hintText: "글 제목"),
),
TextField(
onChanged: (value) {
setState(() {
description = value;
});
},
decoration: InputDecoration(hintText: "글 내용"),
),
Center(
child: ElevatedButton(
onPressed: () {
Navigator.of(context).pop();
setState(() {
todos.add(Todo(
title: title,
description: description));
});
},
child: Text(" 추가 하기")))
],
);
},
);
},
icon: Icon(Icons.add))
],
),
body: ListView.builder(
itemBuilder: (_, index) {
return InkWell(
child: ListTile(
title: Text(todos[index].title),
subtitle: Text(todos[index].description),
),
);
},
itemCount: todos.length,
),
);
}
}
반응형
'Flutter-플러터 > 클론코딩' 카테고리의 다른 글
Flutter Get x - BMI 계산기 코드 읽기 (1) | 2022.10.15 |
---|---|
GET X로 만든 계산기 어플 읽기 (0) | 2022.10.07 |
플러터 계산기 남의 코드 읽기 4 -> 원가계산기 어플 만들때 참조할것 (0) | 2022.09.28 |
플러터 계산기 코드 읽기 (0) | 2022.09.26 |
플러터 계산기 어플 코드 읽기 (0) | 2022.09.26 |