Skip to content

Commit

Permalink
Replace WidgetGenerator sample with NStack sample
Browse files Browse the repository at this point in the history
- Generates a NStack instance
- Generate bundled translations
  • Loading branch information
maru committed Apr 26, 2020
1 parent fa54060 commit 8f6bac3
Show file tree
Hide file tree
Showing 10 changed files with 76 additions and 137 deletions.
17 changes: 3 additions & 14 deletions build.yaml
Original file line number Diff line number Diff line change
@@ -1,20 +1,9 @@
# Read about `build.yaml` at https://pub.dartlang.org/packages/build_config
targets:
$default:
builders:
freezed:
enabled: true
generate_for:
exclude:
- test
- example
include:
- test

builders:
jsonWidgetBuilder:
import: "package:nstack/json_widget.dart"
builder_factories: ["jsonWidgetBuilder"]
nstackBuilder:
import: "package:nstack/builder.dart"
builder_factories: ["nstackBuilder"]
build_extensions: {".json": [".dart"]}
build_to: source
auto_apply: dependents
12 changes: 0 additions & 12 deletions example/lib/example.json

This file was deleted.

3 changes: 2 additions & 1 deletion example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'dart:async';

import 'package:flutter/services.dart';
import 'package:nstack/nstack.dart';
import 'nstack.dart';

void main() {
runApp(MyApp());
Expand All @@ -27,7 +28,7 @@ class _MyAppState extends State<MyApp> {
String platformVersion;
// Platform messages may fail, so we use a try/catch PlatformException.
try {
platformVersion = await Nstack.platformVersion;
platformVersion = await NStack.platformVersion;
} on PlatformException {
platformVersion = 'Failed to get platform version.';
}
Expand Down
4 changes: 4 additions & 0 deletions example/lib/nstack.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"nstack_project_id": "123123123",
"nstack_api_key": "abcabcabc"
}
5 changes: 5 additions & 0 deletions lib/builder.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import 'package:build/build.dart';
import 'package:nstack/src/nstack_builder.dart';

/// Creates a [NstackBuilder]
Builder nstackBuilder(BuilderOptions builderOptions) => const NstackBuilder();
5 changes: 0 additions & 5 deletions lib/json_widget.dart

This file was deleted.

21 changes: 18 additions & 3 deletions lib/nstack.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,24 @@ import 'dart:async';

import 'package:flutter/services.dart';

class Nstack {
static const MethodChannel _channel =
const MethodChannel('nstack');
class NStack {
final String _projectId;
final String _apiKey;
final Map<String, String> _bundledTranslations;

NStack._(this._projectId, this._apiKey, this._bundledTranslations);

static NStack _instance;

static NStack instance(String projectId, String apiKey,
Map<String, String> bundledTranslations) {
if (_instance == null) {
_instance = NStack._(projectId, apiKey, bundledTranslations);
}
return _instance;
}

static const MethodChannel _channel = const MethodChannel('nstack');

static Future<String> get platformVersion async {
final String version = await _channel.invokeMethod('getPlatformVersion');
Expand Down
101 changes: 0 additions & 101 deletions lib/src/builder.dart

This file was deleted.

43 changes: 43 additions & 0 deletions lib/src/nstack_builder.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import 'dart:async';
import 'dart:convert';

import 'package:build/build.dart';

/// A builder which outputs widgets from json.
class NstackBuilder implements Builder {
const NstackBuilder();

@override
FutureOr<void> build(BuildStep buildStep) async {
/// Read the input source and parse it as JSON.
Map<String, Object> input;
String rojectId;
String apiKey;
final AssetId outputId = buildStep.inputId.changeExtension('.dart');
try {
input = json.decode(await buildStep.readAsString(buildStep.inputId));
rojectId = input["nstack_project_id"]; // TODO: Validate.
apiKey = input["nstack_api_key"]; // TODO: Validate.
} catch (err) {
// TODO: Inform SDK user about error.
}
final StringBuffer output = StringBuffer();
output.writeln("// Generated by NStack, do not modify this file.");
output.writeln("import 'package:nstack/nstack.dart';");
output.writeln("");
output.writeln("final NStack nstack = NStack.instance(\"$rojectId\", \"$apiKey\", _bundledTranslations);");
output.writeln("");
output.writeln('''
final _bundledTranslations = {
'en_EN':'{"data":{"section1":{"key1":"value80493753","key2":"value2"}},"meta":{"language":{"id":56,"name":"English","locale":"en_EN","direction":"LRM","is_default":false,"is_best_fit":false},"platform":{"id":447,"slug":"mobile"}}}',
'fr-BE': '{"data":{"section1":{"key1":"valeur1","key2":"valeur2"}},"meta":{"language":{"id":54,"name":"French (Belgian)","locale":"fr-BE","direction":"LRM","is_default":false,"is_best_fit":false},"platform":{"id":447,"slug":"mobile"}}}',
};
''');
await buildStep.writeAsString(outputId, output.toString());
}

@override
Map<String, List<String>> get buildExtensions => const {
'.json': ['.dart']
};
}
2 changes: 1 addition & 1 deletion test/nstack_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ void main() {
});

test('getPlatformVersion', () async {
expect(await Nstack.platformVersion, '42');
expect(await NStack.platformVersion, '42');
});
}

0 comments on commit 8f6bac3

Please sign in to comment.