-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into ios-casestudy-section
- Loading branch information
Showing
10 changed files
with
173 additions
and
0 deletions.
There are no files selected for viewing
Binary file added
BIN
+33.5 KB
vue-frontend/src/assets/images/flutter-app-development/landing/landing1200w.webp
Binary file not shown.
Binary file added
BIN
+144 KB
vue-frontend/src/assets/images/flutter-app-development/landing/landing2400w.webp
Binary file not shown.
Binary file added
BIN
+9.27 KB
vue-frontend/src/assets/images/flutter-app-development/landing/landing400w.webp
Binary file not shown.
Binary file added
BIN
+19.5 KB
vue-frontend/src/assets/images/flutter-app-development/landing/landing800w.webp
Binary file not shown.
72 changes: 72 additions & 0 deletions
72
vue-frontend/src/components/flutter-app-development/LandingSection.vue
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
<template> | ||
<section class="tw-mt-6 lg:tw-mt-[6.75rem]"> | ||
<div | ||
class="tw-container lg:tw-text-left tw-text-center lg:tw-flex xl:tw-my-8 tw-pb-16" | ||
> | ||
<div | ||
class="tw-flex tw-flex-col tw-gap-4 lg:tw-gap-6 lg:tw-flex-1 lg:tw-items-start" | ||
> | ||
<h1 class="header-1">Flutter App Development Company</h1> | ||
<p class="sub-h1-regular tw-text-black-core/[0.89]"> | ||
We harness the power of Flutter to create visually stunning, fast, and | ||
highly responsive applications that effortlessly work on both iOS and | ||
Android platforms. Our team turns your unique business requirements | ||
into reality, giving your brand the competitive edge it needs in this | ||
dynamic mobile app market. | ||
</p> | ||
<div class="tw-hidden lg:tw-block"> | ||
<router-link | ||
to="/contact" | ||
@click.native="mixpanel.track('tap_flutter_development_cta')" | ||
> | ||
<button class="gradient-btn primary-btn tw-ml-0"> | ||
<span class="sub-h4-semibold tw-border-none" | ||
>Get Free Consultation</span | ||
> | ||
</button> | ||
</router-link> | ||
</div> | ||
</div> | ||
<div | ||
class="tw-mx-20 tw-mt-8 lg:tw-mt-0 lg:tw-mx-0 tw-flex lg:tw-flex-wrap tw-flex-col md:tw-gap-[1rem] lg:tw-flex-1" | ||
> | ||
<img | ||
:src="landing400" | ||
:srcset="`${landing400} 400w, ${landing800} 800w, ${landing1200} 1200w, ${landing2400} 2400w`" | ||
class="tw-h-full tw-w-full tw-object-contain" | ||
alt="flutter-landing" | ||
/> | ||
<div class="lg:tw-hidden"> | ||
<router-link | ||
to="/contact" | ||
@click.native="mixpanel.track('tap_flutter_development_cta')" | ||
> | ||
<button class="gradient-btn primary-btn"> | ||
<span class="sub-h3-semibold tw-border-none" | ||
>Get Free Consultation</span | ||
> | ||
</button> | ||
</router-link> | ||
</div> | ||
</div> | ||
</div> | ||
</section> | ||
</template> | ||
|
||
<script> | ||
import landing400 from "@/assets/images/flutter-app-development/landing/landing400w.webp"; | ||
import landing800 from "@/assets/images/flutter-app-development/landing/landing800w.webp"; | ||
import landing1200 from "@/assets/images/flutter-app-development/landing/landing1200w.webp"; | ||
import landing2400 from "@/assets/images/flutter-app-development/landing/landing2400w.webp"; | ||
export default { | ||
data() { | ||
return { | ||
landing400, | ||
landing800, | ||
landing1200, | ||
landing2400, | ||
}; | ||
}, | ||
inject: ["mixpanel"], | ||
}; | ||
</script> |
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
<template> | ||
<div> | ||
<metainfo> | ||
<template v-slot:title="{ content }"> | ||
{{ content }} | ||
</template> | ||
</metainfo> | ||
<Header /> | ||
<LandingSection ref="flutterLanding" /> | ||
</div> | ||
</template> | ||
|
||
<script> | ||
import Header from "@/components/partials/NewHeader.vue"; | ||
import config from "@/config.js"; | ||
import { useMeta } from "vue-meta"; | ||
import { elementInViewPort } from "@/utils.js"; | ||
import LandingSection from "../components/flutter-app-development/LandingSection.vue"; | ||
export default { | ||
data() { | ||
return { | ||
event: "", | ||
events: { | ||
flutterLanding: "view_flutter_development_landing_section", | ||
}, | ||
}; | ||
}, | ||
setup() { | ||
var seoData = config.FLUTTER_APP_DEVELOPMENT_SEO_META_DATA; | ||
useMeta({ | ||
meta: [ | ||
{ | ||
name: "robots", | ||
content: "noindex, nofllow", | ||
vmid: "robots", | ||
}, | ||
], | ||
title: seoData.title, | ||
description: seoData.description, | ||
og: { | ||
type: seoData.type, | ||
title: seoData.title, | ||
url: seoData.url, | ||
image: seoData.image, | ||
}, | ||
}); | ||
}, | ||
components: { | ||
Header, | ||
LandingSection, | ||
}, | ||
methods: { | ||
sendEvent() { | ||
const event = this.events[elementInViewPort(this.$refs)]; | ||
if (event && this.event !== event) { | ||
this.event = event; | ||
this.mixpanel.track(event); | ||
} | ||
}, | ||
}, | ||
beforeRouteEnter(to, from, next) { | ||
if (!config.SHOW_FLUTTER_APP_DEVELOPMENT_PAGE) { | ||
next({ | ||
name: "Error404Page", | ||
params: { pathMatch: "/flutter-app-development" }, | ||
}); | ||
} else { | ||
next(); | ||
} | ||
}, | ||
inject: ["mixpanel"], | ||
mounted() { | ||
window.addEventListener("scroll", this.sendEvent); | ||
this.mixpanel.track("view_flutter_development_page"); | ||
}, | ||
unmounted() { | ||
window.removeEventListener("scroll", this.sendEvent); | ||
}, | ||
}; | ||
</script> |