Created
September 8, 2020 23:20
-
-
Save roipeker/1867694ddeb4fe391525121c275c8c27 to your computer and use it in GitHub Desktop.
GetX + Hive simple server sample.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: server | |
environment: | |
sdk: ">=2.8.1 <3.0.0" | |
dependencies: | |
args: ^1.5.0 | |
hive: | |
get_server: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'dart:async'; | |
import 'dart:io'; | |
import 'package:args/args.dart'; | |
import 'package:get_server/get_server.dart'; | |
import 'package:hive/hive.dart'; | |
Box settings; | |
Future<void> main(List<String> args) async { | |
var defaultHost = 'localhost'; | |
var parser = ArgParser() | |
..addOption('port', abbr: 'p') | |
..addOption('host', abbr: 's'); | |
final result = parser.parse(args); | |
final portStr = result['port'] ?? Platform.environment['PORT']; | |
final port = int.tryParse(portStr) ?? 8080; | |
final hostname = result['host'] ?? defaultHost; | |
// init hive. | |
Hive.init('./storage'); | |
settings = await Hive.openBox('settings'); | |
await runApp( | |
GetServer( | |
host: hostname, | |
port: port, | |
getPages: [ | |
GetPage(name: '/', page: Home()), | |
GetPage(name: '/todo', page: Todo(0)), | |
GetPage(name: '/todo', page: Todo(1), method: Method.post), | |
], | |
), | |
); | |
} | |
class Home extends GetView { | |
@override | |
FutureOr build(Context context) => context.send('Hello from GetX Server!'); | |
} | |
class Todo extends GetView { | |
final int type; | |
Todo(this.type); | |
@override | |
Future<FutureOr> build(Context context) async { | |
if (type == 0) { | |
return context.sendJson(settings.values.toList()); | |
} else { | |
try { | |
final data = await context.request.payload(); | |
print('data: $data'); | |
final resultKey = await settings.add(data); | |
return context.response.send('Thanks, record saved with index: $resultKey'); | |
} catch (e) { | |
return context.response.status(500).send(e.toString()); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It would be great to see GetX Server examples with Hasura-like GraphQL. All examples so far are with DIO.