Flutter의 Todo 앱 샘플
완성 이미지
코드
main 에 쓰고 있는 샘플입니다.
main.dartimport 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: TodoList(),
);
}
}
class TodoList extends StatefulWidget {
@override
TodoListState createState() => TodoListState();
}
class TodoListState extends State<TodoList> {
List<String> _todoItems = ['task1', 'task2', 'task3', 'task4'];
void _addTodoItem(String task) {
if (task.length > 0) {
setState(() => _todoItems.insert(0, task));
}
}
Widget _buildTodoList() {
return ListView.separated(
itemCount: _todoItems.length,
itemBuilder: (context, index) {
return _buildTodoItem(
context,
_todoItems[index],
index
);
},
separatorBuilder: (context, index) {
return Divider();
},
);
}
Widget _buildTodoItem(BuildContext context, String todoText, int index) {
return Dismissible(
// Show a red background as the item is swiped away.
background: Container(color: Colors.red),
key: Key(todoText),
onDismissed: (direction) {
setState(() {
_todoItems.removeAt(index);
});
Scaffold
.of(context)
.showSnackBar(SnackBar(content: Text("$todoText dismissed")));
},
child: ListTile(title: Text(todoText)),
);
}
Widget _floatingButton() {
return FloatingActionButton(
onPressed: () => {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Scaffold(
appBar: AppBar(title: Text('New task'),),
body: TextField(
autofocus: true,
onSubmitted: (val) {
_addTodoItem(val);
Navigator.pop(context);
},
decoration: InputDecoration(
hintText: 'タスクをどうぞ',
contentPadding: const EdgeInsets.all(16.0),
)
),
)
)
)
},
child: Icon(Icons.add)
);
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Todo')),
body: _buildTodoList(),
floatingActionButton: _floatingButton(),
);
}
}
참고
htps : // 메이 m. 이 m / te-u-b-b-b / Makin-G-A-do-p-u-th-f r-5c63 b88190
htps // 푸시 r. 코 m / 쓰리 아 ls / f ぅ r ぃ st
htps : // f ぅ라고 r. v / cs / 코오 k 보오 k / 나 ぃ가 치온 / 나
htps : // f ぅ라고 r. v / 도 cs / 코오 k 보오 k / 게 s 얽힌 s / ぢ s 미시 b
Reference
이 문제에 관하여(Flutter의 Todo 앱 샘플), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mochizukikotaro/items/769647de891712b40ab4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
main 에 쓰고 있는 샘플입니다.
main.dart
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: TodoList(),
);
}
}
class TodoList extends StatefulWidget {
@override
TodoListState createState() => TodoListState();
}
class TodoListState extends State<TodoList> {
List<String> _todoItems = ['task1', 'task2', 'task3', 'task4'];
void _addTodoItem(String task) {
if (task.length > 0) {
setState(() => _todoItems.insert(0, task));
}
}
Widget _buildTodoList() {
return ListView.separated(
itemCount: _todoItems.length,
itemBuilder: (context, index) {
return _buildTodoItem(
context,
_todoItems[index],
index
);
},
separatorBuilder: (context, index) {
return Divider();
},
);
}
Widget _buildTodoItem(BuildContext context, String todoText, int index) {
return Dismissible(
// Show a red background as the item is swiped away.
background: Container(color: Colors.red),
key: Key(todoText),
onDismissed: (direction) {
setState(() {
_todoItems.removeAt(index);
});
Scaffold
.of(context)
.showSnackBar(SnackBar(content: Text("$todoText dismissed")));
},
child: ListTile(title: Text(todoText)),
);
}
Widget _floatingButton() {
return FloatingActionButton(
onPressed: () => {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Scaffold(
appBar: AppBar(title: Text('New task'),),
body: TextField(
autofocus: true,
onSubmitted: (val) {
_addTodoItem(val);
Navigator.pop(context);
},
decoration: InputDecoration(
hintText: 'タスクをどうぞ',
contentPadding: const EdgeInsets.all(16.0),
)
),
)
)
)
},
child: Icon(Icons.add)
);
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Todo')),
body: _buildTodoList(),
floatingActionButton: _floatingButton(),
);
}
}
참고
htps : // 메이 m. 이 m / te-u-b-b-b / Makin-G-A-do-p-u-th-f r-5c63 b88190
htps // 푸시 r. 코 m / 쓰리 아 ls / f ぅ r ぃ st
htps : // f ぅ라고 r. v / cs / 코오 k 보오 k / 나 ぃ가 치온 / 나
htps : // f ぅ라고 r. v / 도 cs / 코오 k 보오 k / 게 s 얽힌 s / ぢ s 미시 b
Reference
이 문제에 관하여(Flutter의 Todo 앱 샘플), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mochizukikotaro/items/769647de891712b40ab4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Flutter의 Todo 앱 샘플), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mochizukikotaro/items/769647de891712b40ab4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)