Created
November 14, 2021 10:42
-
-
Save AhmetMelihSerter/3d6e3114008d1587a331521daebe905a to your computer and use it in GitHub Desktop.
Flutter Architecture Snippets
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
Show hidden characters
{ | |
"Architecture Model": { | |
"scope": "dart", | |
"prefix": "arc_model", | |
"body": [ | |
"import 'package:json_annotation/json_annotation.dart';", | |
"import 'package:vexana/vexana.dart';", | |
"", | |
"part '$TM_FILENAME_BASE.g.dart';", | |
"", | |
"@JsonSerializable()", | |
"class ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} extends INetworkModel<${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}> {", | |
"", | |
"\t@override", | |
"\t${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} fromJson(Map<String, Object?> json) {", | |
"\t\treturn _\\$${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}FromJson(json);", | |
"\t}", | |
"", | |
"\t@override", | |
"\tMap<String, Object?> toJson() {", | |
"\t\treturn _\\$${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}ToJson(this);", | |
"\t}", | |
"}", | |
], | |
"description": "Architecture Create Model" | |
}, | |
"Architecture View Model": { | |
"scope": "dart", | |
"prefix": "arc_view_model", | |
"body": [ | |
"import 'package:flutter/material.dart';", | |
"import 'package:mobx/mobx.dart';", | |
"", | |
"import '$1../../core/base/view_model/base_view_model.dart';", | |
"import '../service/i_${TM_FILENAME_BASE/^([^_.]+).+/$1/g}_service.dart';", | |
"import '../service/${TM_FILENAME_BASE/^([^_.]+).+/$1/g}_service.dart';", | |
"", | |
"part '${TM_FILENAME_BASE}.g.dart';", | |
"", | |
"class ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} = _${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}Base with _\\$${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g};", | |
"", | |
"abstract class _${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}Base with Store, BaseViewModel {", | |
"\tlate I${TM_FILENAME_BASE/^([^_.]+).+/${1:/capitalize}/g}Service service;", | |
"", | |
"\t@override", | |
"\tvoid setContext(BuildContext context) {", | |
"\t\tthis.context = context;", | |
"\t}", | |
"", | |
"\t@override", | |
"\tvoid init() {", | |
"\t\tdebugPrint('${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} initialize');", | |
"\t\tservice = ${TM_FILENAME_BASE/^([^_.]+).+/${1:/capitalize}/g}Service(networkManager.networkManager);", | |
"\t}", | |
"}" | |
], | |
"description": "Architecture Create View Model" | |
}, | |
"Architecture View": { | |
"scope": "dart", | |
"prefix": "arc_view", | |
"body": [ | |
"import 'package:flutter/material.dart';", | |
"", | |
"import '$1../../../core/base/view/base_view.dart';", | |
"import '../view_model/${TM_FILENAME_BASE}_model.dart';", | |
"", | |
"class ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} extends StatelessWidget {", | |
"\tconst ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}({Key? key}) : super(key: key);", | |
"", | |
"\t@override", | |
"\tWidget build(BuildContext context) {", | |
"\t\treturn BaseView<${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}Model>(", | |
"\t\t\tviewModel: ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}Model(),", | |
"\t\t\tonModelReady: (${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}Model model) {", | |
"\t\t\t\tmodel.setContext(context);", | |
"\t\t\t\tmodel.init();", | |
"\t\t\t},", | |
"\t\t\tonPageBuilder: (BuildContext context, ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}Model viewModel) {", | |
"\t\t\t\treturn Scaffold(", | |
"\t\t\t\t\tappBar: AppBar(", | |
"\t\t\t\t\t\ttitle: Text(\"$2\"),", | |
"\t\t\t\t\t),", | |
"\t\t\t\t\tbody: Column(", | |
"\t\t\t\t\t\tchildren: [$3],", | |
"\t\t\t\t\t),", | |
"\t\t\t\t);", | |
"\t\t\t},", | |
"\t\t);", | |
"\t}", | |
"}" | |
], | |
"description": "Architecture Create View" | |
}, | |
"Architecture Service": { | |
"scope": "dart", | |
"prefix": "arc_service", | |
"body": [ | |
"import 'package:vexana/vexana.dart';", | |
"", | |
"import 'i_$TM_FILENAME_BASE.dart';", | |
"", | |
"class ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} extends I${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} {", | |
"\t${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}(INetworkManager manager) : super(manager);", | |
"}" | |
], | |
"description": "Architecture Create Service" | |
}, | |
"Architecture IService": { | |
"prefix": "arc_service_i", | |
"body": [ | |
"import 'package:vexana/vexana.dart';", | |
"", | |
"abstract class ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} {", | |
"\tfinal INetworkManager manager;", | |
"", | |
"\t${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}(this.manager);", | |
"}" | |
], | |
"description": "Architecture Create IService" | |
}, | |
"Lazy Singleton": { | |
"scope": "dart", | |
"prefix": "lazy", | |
"body": [ | |
"static ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}? _instance;", | |
"", | |
"static ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} get instance => _instance ??= ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}._internal();", | |
"", | |
"${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}._internal();", | |
], | |
"description": "Lazy Singleton" | |
}, | |
"Eager Singleton": { | |
"scope": "dart", | |
"prefix": "eager", | |
"body": [ | |
"static final ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} _instance = ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}._internal();", | |
"", | |
"static ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} get instance => _instance;", | |
"", | |
"${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}._internal();", | |
], | |
"description": "Eager Singleton" | |
}, | |
"Lazy Singleton Class": { | |
"scope": "dart", | |
"prefix": "lazyClass", | |
"body": [ | |
"class ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} {", | |
"\tstatic ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}? _instance;", | |
"", | |
"\tstatic ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} get instance => _instance ??= ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}._internal();", | |
"", | |
" ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}._internal();", | |
"}" | |
], | |
"description": "Lazy Singleton Class" | |
}, | |
"Eager Singleton Class": { | |
"scope": "dart", | |
"prefix": "eagerClass", | |
"body": [ | |
"class ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} {", | |
" static final ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} _instance = ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}._internal();", | |
" ", | |
" static ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g} get instance => _instance;", | |
" ", | |
" ${TM_FILENAME_BASE/$|(^|[_.])([^_.]+)/${2:/capitalize}/g}._internal();", | |
"}" | |
], | |
"description": "Eager Singleton Class" | |
}, | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment