drift/sally_flutter/example/lib/main.dart

51 lines
1.0 KiB
Dart
Raw Normal View History

2019-02-17 02:32:54 -08:00
import 'package:flutter/material.dart';
import 'database.dart';
import 'widgets/homescreen.dart';
2019-02-17 02:32:54 -08:00
void main() => runApp(MyApp());
2019-02-17 04:07:27 -08:00
class MyApp extends StatefulWidget {
2019-02-17 02:32:54 -08:00
@override
2019-02-17 04:07:27 -08:00
MyAppState createState() {
return MyAppState();
2019-02-17 02:32:54 -08:00
}
}
2019-02-17 04:07:27 -08:00
class MyAppState extends State<MyApp> {
2019-02-17 02:32:54 -08:00
Database _db;
2019-02-17 02:32:54 -08:00
@override
2019-02-17 04:07:27 -08:00
void initState() {
_db = Database();
2019-02-17 04:07:27 -08:00
super.initState();
}
2019-02-17 02:32:54 -08:00
@override
Widget build(BuildContext context) {
return DatabaseProvider(
db: _db,
2019-02-17 04:07:27 -08:00
child: MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.purple,
2019-02-17 02:32:54 -08:00
),
2019-02-17 04:07:27 -08:00
home: HomeScreen(),
2019-02-17 02:32:54 -08:00
),
);
}
}
2019-02-17 04:07:27 -08:00
class DatabaseProvider extends InheritedWidget {
2019-02-17 04:07:27 -08:00
final Database db;
2019-02-17 04:07:27 -08:00
DatabaseProvider({@required this.db, Widget child}) : super(child: child);
2019-02-17 04:07:27 -08:00
@override
bool updateShouldNotify(DatabaseProvider oldWidget) {
return oldWidget.db != db;
2019-02-17 04:07:27 -08:00
}
static Database provideDb(BuildContext ctx) => (ctx.inheritFromWidgetOfExactType(DatabaseProvider) as DatabaseProvider).db;
2019-02-17 04:07:27 -08:00
}