UNPKG

router-register-plugin

Version:

鸿蒙ZRouter动态路由框架页面模板化插件

129 lines (118 loc) 3.53 kB
{{#each pageList}} {{#if isDefaultExport}} import {{pageName}} from "{{importPath}}"; {{else}} import { {{pageName}} } from "{{importPath}}"; {{/if}} {{#if useTemplate}} import { Lifecycle, LifecycleEvent, LifecycleRegistry, ZRouter } from "{{zRouterPath}}"; {{#if lifecycleObserver}} {{#if lifecycleObserver.isDefaultExport}} import {{lifecycleObserver.pageName}} from "{{lifecycleObserver.importPath}}"; {{else}} import { {{lifecycleObserver.pageName}} } from "{{lifecycleObserver.importPath}}"; {{/if}} {{/if}} {{#if attributes}} {{#if attributes.isDefaultExport}} import {{attributes.pageName}} from "{{attributes.importPath}}"; {{else}} import { {{attributes.pageName}} } from "{{attributes.importPath}}"; {{/if}} {{/if}} {{/if}} {{/each}} {{#each pageList}} @Builder function {{buildFunctionName}}(name: string, param?: ESObject) { {{#if useTemplate}} {{pageName}}NavDestView() {{else}} {{#if paramStr}} {{pageName}}({ {{paramStr}} }) {{else}} {{pageName}}() {{/if}} {{/if}} } {{#if useTemplate}} @Preview {{#if useV2}} @ComponentV2 {{else}} @Component {{/if}} export struct {{pageName}}NavDestView { @Lifecycle lifecycle: LifecycleRegistry = LifecycleRegistry.create(this) {{#if lifecycleObserver}} {{#if useV2}} @Local {{lifecycleObserverAttributeName}}: {{lifecycleObserver.pageName}} = new {{lifecycleObserver.pageName}}() {{else}} @Provide {{lifecycleObserverAttributeName}}: {{lifecycleObserver.pageName}} = new {{lifecycleObserver.pageName}}() {{/if}} {{/if}} {{#if attributes}} {{#if useV2}} private attrModifier: {{attributes.pageName}} = new {{attributes.pageName}}() {{else}} @Provide attrModifier: {{attributes.pageName}} = new {{attributes.pageName}}() {{/if}} {{/if}} private navDestinationId: string | undefined = '' aboutToAppear(): void { {{#if lifecycleObserver}} this.lifecycle.addObserver(this.{{lifecycleObserverAttributeName}}) {{/if}} this.lifecycle.addListener((event, router) => { switch (event) { case LifecycleEvent.ON_WILL_APPEAR: this.navDestinationId = router?.navDestinationId ZRouter.templateMgr().register(this.navDestinationId) break; default: ZRouter.templateMgr().dispatch(this.navDestinationId, event, router) break; } }) } build() { NavDestination() { {{#if useV2}} {{#if lifecycleObserver}} {{pageName}}({ {{lifecycleObserverAttributeName}}:this.{{lifecycleObserverAttributeName}} }) {{else}} {{pageName}}() {{/if}} {{else}} {{pageName}}() {{/if}} } .onReady((context) => { if (!this.navDestinationId) { this.navDestinationId = context.navDestinationId } {{#if lifecycleObserver}} this.{{lifecycleObserverAttributeName}}.onReady(context) {{/if}} }) .onBackPressed(() => { const r = ZRouter.templateMgr().dispatch(this.navDestinationId, LifecycleEvent.ON_BACK_PRESS) let backPressed = false {{#if lifecycleObserver}} backPressed = this.{{lifecycleObserverAttributeName}}.onBackPress() {{/if}} return backPressed || (typeof r === 'boolean' && r) }) .hideTitleBar({{hideTitleBar}}) {{#if title}} .title("{{title}}") {{/if}} {{#if attributes}} .attributeModifier(this.attrModifier) {{/if}} } } {{/if}} {{/each}}