Skip to content

Instantly share code, notes, and snippets.

@roipeker
Created September 8, 2020 23:20
Show Gist options
  • Save roipeker/1867694ddeb4fe391525121c275c8c27 to your computer and use it in GitHub Desktop.
Save roipeker/1867694ddeb4fe391525121c275c8c27 to your computer and use it in GitHub Desktop.
GetX + Hive simple server sample.
name: server
environment:
sdk: ">=2.8.1 <3.0.0"
dependencies:
args: ^1.5.0
hive:
get_server:
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());
}
}
}
}
@gdelgado11
Copy link

It would be great to see GetX Server examples with Hasura-like GraphQL. All examples so far are with DIO.

@roipeker
Copy link
Author

roipeker commented Oct 2, 2020

Yep, myself, i have no experience with it... maybe one day @gdelgado11.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment