* pubsec.yaml
dependencies:
flutter:
sdk: flutter
sqflite: ^1.3.0
path: ^1.7.0
* todo.dart
class Todo {
String title;
String content;
bool active;
int id;
Todo({this.title, this.content, this.active, this.id});
Map<String, dynamic> toMap() {
return {
'id': id,
'title': title,
'content': content,
'active': active,
};
}
}
* main.dart
import 'package:flutter/material.dart';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';
import 'package:sql_example/addTodo.dart';
import 'package:sql_example/clearList.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
Future<Database> database = initDatabase();
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
initialRoute: '/',
routes: {
'/': (context) => DatabaseApp(database),
'/add': (context) => AddTodoApp(database),
'/clear': (context) => ClearListApp(database)
},
);
}
Future<Database> initDatabase() async {
return openDatabase(
join(await getDatabasesPath(), 'todo_database.db'),
onCreate: (db, version) {
return db.execute(
"CREATE TABLE todos(id INTEGER PRIMARY KEY AUTOINCREMENT, "
"title TEXT, content TEXT, active BOOL)",
);
},
version: 1,
);
}
}
class DatabaseApp extends StatefulWidget {
final Future<Database> db;
DatabaseApp(this.db);
@override
_DatabaseAppState createState() => _DatabaseAppState();
}
class _DatabaseAppState extends State<DatabaseApp> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Database Example'),
),
body: Container(
child: Center(),
),
floatingActionButton: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [FloatingActionButton(
child: Icon(Icons.add),
onPressed: () {
Navigator.of(context).pushNamed('/add');
},
heroTag: null, ---> 없으면 에러남
),
FloatingActionButton(
child: Icon(Icons.delete),
onPressed: () {
Navigator.of(context).pushNamed('/clear');
},
heroTag: null,
),
],
),
);
}
}
*addtodo.dart
import 'package:flutter/material.dart';
import 'package:sqflite/sqflite.dart';
class AddTodoApp extends StatefulWidget {
final Future<Database> db;
AddTodoApp(this.db);
@override
_AddTodoAppState createState() => _AddTodoAppState();
}
class _AddTodoAppState extends State<AddTodoApp> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('addTodo Page'),
),
body: Center(child: Text("addTodo Page")),
);
}
}
* clearList.dart
import 'package:flutter/material.dart';
import 'package:sqflite/sqlite_api.dart';
class ClearListApp extends StatefulWidget {
final Future<Database> db;
ClearListApp(this.db);
@override
_ClearListAppState createState() => _ClearListAppState();
}
class _ClearListAppState extends State<ClearListApp> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('clearList Page'),
),
body: Center(child: Text("clearList Page")),
);
}
}
여기까지 하면 이상태
'코딩(개발) > Flutter' 카테고리의 다른 글
todolist(firebase) step1 (0) | 2021.03.10 |
---|---|
sqflite - rawQuery/rawInsert (0) | 2021.03.08 |
chatting ui (0) | 2021.03.05 |
ListView / AnimateList (0) | 2021.03.04 |
TextField (0) | 2021.03.04 |
댓글