createInitGetxPattern function
Future<void>
createInitGetxPattern(
)
Implementation
Future<void> createInitGetxPattern() async {
var canContinue = await createMain();
if (!canContinue) return;
var isServerProject = PubspecUtils.isServerProject;
if (!isServerProject) {
await installGet();
}
var initialDirs = [
Directory(Structure.replaceAsExpected(path: 'lib/app/data/')),
Directory(Structure.replaceAsExpected(path: 'lib/app/utils/extensions/')),
];
var initialFiles = [
File(Structure.replaceAsExpected(path: 'lib/app/utils/extensions.dart')),
File(Structure.replaceAsExpected(path: 'lib/app/utils/extensions/get_interface.dart')),
];
GetXMainSample(isServer: isServerProject).create();
await Future.wait([
CreatePageCommand().execute(),
]);
createListDirectory(initialDirs);
createListFile(initialFiles);
var extension = File(Structure.replaceAsExpected(path: 'lib/app/utils/extensions.dart'));
final extensionCode = '''
import 'package:get_mad/get.dart';
import '../routes/app_pages.dart';
part 'extensions/get_interface.dart';
''';
await extension.writeAsString(extensionCode, mode: FileMode.write);
var getInterfaceExtension = File(Structure.replaceAsExpected(path: 'lib/app/utils/extensions/get_interface.dart'));
var getInterfaceCode = '''
part of '../extensions.dart';
extension UniqueRoute on GetInterface {
Future<T?>? toNamedUnique<T>(String name, {dynamic arguments, String? uniqueTag}) {
final page = AppPages.routes.firstWhere((element) => element.name == name);
final getView = page.page() as GetView;
uniqueTag ??= DateTime.now().millisecondsSinceEpoch.toString();
return Get.to<T>(
() => getView..tagValue = uniqueTag,
arguments: arguments,
binding: page.binding?..tagValue = uniqueTag,
preventDuplicates: false,
routeName: name,
);
}
}
''';
await getInterfaceExtension.writeAsString(getInterfaceCode, mode: FileMode.write);
LogService.success(Translation(LocaleKeys.sucess_getx_pattern_generated));
}