From 013a7e7cd0c47e2c95cd7e0ab32ea484f8000020 Mon Sep 17 00:00:00 2001
From: agilob <info@agilob.net>
Date: Sun, 28 Jun 2020 10:53:25 +0100
Subject: [PATCH] [Dart] Annotate required named parameters in model

---
 .../src/main/resources/dart2/apilib.mustache         |  1 +
 .../src/main/resources/dart2/class.mustache          |  2 +-
 .../src/main/resources/dart2/pubspec.mustache        |  1 +
 .../petstore/dart2/petstore/test/pet_test.dart       | 12 ++++++------
 .../petstore/dart2/petstore_client_lib/lib/api.dart  |  1 +
 .../dart2/petstore_client_lib/lib/model/pet.dart     |  4 ++--
 .../petstore/dart2/petstore_client_lib/pubspec.yaml  |  1 +
 7 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/modules/openapi-generator/src/main/resources/dart2/apilib.mustache b/modules/openapi-generator/src/main/resources/dart2/apilib.mustache
index 365ae92eb1d..14c674c97de 100644
--- a/modules/openapi-generator/src/main/resources/dart2/apilib.mustache
+++ b/modules/openapi-generator/src/main/resources/dart2/apilib.mustache
@@ -3,6 +3,7 @@ library {{pubName}}.api;
 import 'dart:async';
 import 'dart:convert';
 import 'package:http/http.dart';
+import 'package:meta/meta.dart';
 
 part 'api_client.dart';
 part 'api_helper.dart';
diff --git a/modules/openapi-generator/src/main/resources/dart2/class.mustache b/modules/openapi-generator/src/main/resources/dart2/class.mustache
index 6c7eca10552..0a32e58c7ab 100644
--- a/modules/openapi-generator/src/main/resources/dart2/class.mustache
+++ b/modules/openapi-generator/src/main/resources/dart2/class.mustache
@@ -9,7 +9,7 @@ class {{classname}} {
 
   {{classname}}({
   {{#vars}}
-    this.{{name}},
+    {{#required}}@required this.{{name}},{{/required}}{{^required}}this.{{name}},{{/required}}
   {{/vars}}
   });
 
diff --git a/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache b/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache
index 6f1bd2bb4a0..ab082fe34d8 100644
--- a/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache
+++ b/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache
@@ -8,5 +8,6 @@ environment:
   sdk: '>=2.0.0 <3.0.0'
 dependencies:
   http: '>=0.12.0 <0.13.0'
+  meta: ^1.1.8
 dev_dependencies:
   test: ^1.3.0
diff --git a/samples/client/petstore/dart2/petstore/test/pet_test.dart b/samples/client/petstore/dart2/petstore/test/pet_test.dart
index 5898c221607..1ec614e0fdd 100644
--- a/samples/client/petstore/dart2/petstore/test/pet_test.dart
+++ b/samples/client/petstore/dart2/petstore/test/pet_test.dart
@@ -26,13 +26,13 @@ void main() {
         ..name = 'Jose'
     ];
     return Pet(
-      id : id,
-      category: category,
-      tags: tags,
-      name: name,
+        id : id,
+        category: category,
+        name: name, //required field
+        photoUrls: ['https://petstore.com/sample/photo1.jpg'] //required field
     )
-      ..status = status
-      ..photoUrls = ['https://petstore.com/sample/photo1.jpg'];
+      ..tags = tags
+      ..status = '';
   }
 
   group('Pet API with live client', () {
diff --git a/samples/client/petstore/dart2/petstore_client_lib/lib/api.dart b/samples/client/petstore/dart2/petstore_client_lib/lib/api.dart
index e73e8722381..c13c8922431 100644
--- a/samples/client/petstore/dart2/petstore_client_lib/lib/api.dart
+++ b/samples/client/petstore/dart2/petstore_client_lib/lib/api.dart
@@ -3,6 +3,7 @@ library openapi.api;
 import 'dart:async';
 import 'dart:convert';
 import 'package:http/http.dart';
+import 'package:meta/meta.dart';
 
 part 'api_client.dart';
 part 'api_helper.dart';
diff --git a/samples/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart b/samples/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart
index 4b9c7869e65..507661984e2 100644
--- a/samples/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart
+++ b/samples/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart
@@ -18,8 +18,8 @@ class Pet {
   Pet({
     this.id,
     this.category,
-    this.name,
-    this.photoUrls,
+    @required this.name,
+    @required this.photoUrls,
     this.tags,
     this.status,
   });
diff --git a/samples/client/petstore/dart2/petstore_client_lib/pubspec.yaml b/samples/client/petstore/dart2/petstore_client_lib/pubspec.yaml
index 58c44ac9eb5..023b0822fdf 100644
--- a/samples/client/petstore/dart2/petstore_client_lib/pubspec.yaml
+++ b/samples/client/petstore/dart2/petstore_client_lib/pubspec.yaml
@@ -8,5 +8,6 @@ environment:
   sdk: '>=2.0.0 <3.0.0'
 dependencies:
   http: '>=0.12.0 <0.13.0'
+  meta: ^1.1.8
 dev_dependencies:
   test: ^1.3.0
-- 
GitLab