|
|
<!DOCTYPE html> |
|
|
<html lang="en"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>FlutterFlow Studio for Mobile</title> |
|
|
<link rel="icon" type="image/x-icon" href="/static/favicon.ico"> |
|
|
<script src="https://cdn.tailwindcss.com"></script> |
|
|
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> |
|
|
<script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.globe.min.js"></script> |
|
|
<script src="https://unpkg.com/feather-icons"></script> |
|
|
<style> |
|
|
.gradient-bg { |
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
|
|
} |
|
|
.code-editor { |
|
|
font-family: 'Courier New', monospace; |
|
|
background: #1a202c; |
|
|
border-radius: 8px; |
|
|
} |
|
|
.preview-frame { |
|
|
background: #f7fafc; |
|
|
border-radius: 8px; |
|
|
box-shadow: 0 10px 25px rgba(0,0,0,0.1); |
|
|
} |
|
|
.toolbar-item { |
|
|
transition: all 0.3s ease; |
|
|
} |
|
|
.toolbar-item:hover { |
|
|
transform: translateY(-2px); |
|
|
box-shadow: 0 5px 15px rgba(0,0,0,0.2); |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body class="min-h-screen bg-gray-50"> |
|
|
|
|
|
<nav class="bg-white shadow-lg sticky top-0 z-50"> |
|
|
<div class="max-w-7xl mx-auto px-4"> |
|
|
<div class="flex justify-between items-center h-16"> |
|
|
<div class="flex items-center space-x-2"> |
|
|
<i data-feather="code" class="text-purple-600"></i> |
|
|
<span class="font-bold text-xl text-gray-800">FlutterFlow Studio</span> |
|
|
</div> |
|
|
<div class="flex items-center space-x-4"> |
|
|
<button class="bg-purple-600 text-white px-4 py-2 rounded-lg hover:bg-purple-700 transition"> |
|
|
<i data-feather="save" class="w-4 h-4 mr-2 inline"></i> |
|
|
Save Project |
|
|
</button> |
|
|
<button class="bg-green-500 text-white px-4 py-2 rounded-lg hover:bg-green-600 transition"> |
|
|
<i data-feather="play" class="w-4 h-4 mr-2 inline"></i> |
|
|
Run App |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</nav> |
|
|
|
|
|
|
|
|
<div class="max-w-7xl mx-auto px-4 py-8"> |
|
|
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8"> |
|
|
|
|
|
<div class="space-y-6"> |
|
|
<div class="bg-white rounded-xl shadow-lg p-6"> |
|
|
<div class="flex justify-between items-center mb-4"> |
|
|
<h2 class="text-xl font-bold text-gray-800">Code Editor</h2> |
|
|
<div class="flex space-x-2"> |
|
|
<button class="p-2 hover:bg-gray-100 rounded"> |
|
|
<i data-feather="copy"></i> |
|
|
</button> |
|
|
<button class="p-2 hover:bg-gray-100 rounded"> |
|
|
<i data-feather="more-vertical"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
<div class="code-editor p-4 rounded-lg"> |
|
|
<pre class="text-green-400 text-sm overflow-auto max-h-96"> |
|
|
<span class="text-blue-400">import</span> <span class="text-yellow-400">'package:flutter/material.dart'</span>; |
|
|
|
|
|
<span class="text-blue-400">void</span> <span class="text-purple-400">main</span>() { |
|
|
<span class="text-purple-400">runApp</span>(<span class="text-blue-400">MyApp</span>()); |
|
|
} |
|
|
|
|
|
<span class="text-blue-400">class</span> <span class="text-yellow-400">MyApp</span> <span class="text-blue-400">extends</span> <span class="text-yellow-400">StatelessWidget</span> { |
|
|
<span class="text-blue-400">@override</span> |
|
|
<span class="text-blue-400">Widget</span> <span class="text-purple-400">build</span>(<span class="text-blue-400">BuildContext</span> context) { |
|
|
<span class="text-blue-400">return</span> <span class="text-yellow-400">MaterialApp</span>( |
|
|
<span class="text-gray-400">title: </span><span class="text-yellow-400">'Flutter Demo'</span>, |
|
|
<span class="text-gray-400">home: </span><span class="text-yellow-400">MyHomePage</span>(), |
|
|
); |
|
|
} |
|
|
} |
|
|
|
|
|
<span class="text-blue-400">class</span> <span class="text-yellow-400">MyHomePage</span> <span class="text-blue-400">extends</span> <span class="text-yellow-400">StatelessWidget</span> { |
|
|
<span class="text-blue-400">@override</span> |
|
|
<span class="text-blue-400">Widget</span> <span class="text-purple-400">build</span>(<span class="text-blue-400">BuildContext</span> context) { |
|
|
<span class="text-blue-400">return</span> <span class="text-yellow-400">Scaffold</span>( |
|
|
<span class="text-gray-400">body: </span><span class="text-yellow-400">Center</span>( |
|
|
<span class="text-gray-400">child: </span><span class="text-yellow-400">Text</span>(<span class="text-yellow-400">'Hello Flutter!'</span>), |
|
|
), |
|
|
); |
|
|
} |
|
|
} |
|
|
</pre> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="bg-white rounded-xl shadow-lg p-6"> |
|
|
<h3 class="text-lg font-semibold text-gray-800 mb-4">Widget Toolbox</h3> |
|
|
<div class="grid grid-cols-4 gap-3"> |
|
|
<div class="toolbar-item bg-blue-50 p-3 rounded-lg text-center cursor-pointer hover:bg-blue-100"> |
|
|
<i data-feather="square" class="w-6 h-6 mx-auto text-blue-600"></i> |
|
|
<p class="text-xs mt-1 text-gray-600">Container</p> |
|
|
</div> |
|
|
<div class="toolbar-item bg-green-50 p-3 rounded-lg text-center cursor-pointer hover:bg-green-100"> |
|
|
<i data-feather="type" class="w-6 h-6 mx-auto text-green-600"></i> |
|
|
<p class="text-xs mt-1 text-gray-600">Text</p> |
|
|
</div> |
|
|
<div class="toolbar-item bg-purple-50 p-3 rounded-lg text-center cursor-pointer hover:bg-purple-100"> |
|
|
<i data-feather="image" class="w-6 h-6 mx-auto text-purple-600"></i> |
|
|
<p class="text-xs mt-1 text-gray-600">Image</p> |
|
|
</div> |
|
|
<div class="toolbar-item bg-red-50 p-3 rounded-lg text-center cursor-pointer hover:bg-red-100"> |
|
|
<i data-feather="navigation" class="w-6 h-6 mx-auto text-red-600"></i> |
|
|
<p class="text-xs mt-1 text-gray-600">Button</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="space-y-6"> |
|
|
<div class="bg-white rounded-xl shadow-lg p-6"> |
|
|
<div class="flex justify-between items-center mb-4"> |
|
|
<h2 class="text-xl font-bold text-gray-800">Live Preview</h2> |
|
|
<div class="flex space-x-2"> |
|
|
<button class="px-3 py-1 bg-gray-100 rounded text-sm">Phone</button> |
|
|
<button class="px-3 py-1 bg-gray-200 rounded text-sm">Tablet</button> |
|
|
<button class="px-3 py-1 bg-gray-200 rounded text-sm">Desktop</button> |
|
|
</div> |
|
|
</div> |
|
|
<div class="preview-frame p-8 flex justify-center"> |
|
|
<div class="w-64 h-96 bg-white border-2 border-gray-300 rounded-3xl overflow-hidden shadow-lg relative"> |
|
|
|
|
|
<div class="bg-purple-600 h-12 flex items-center justify-center"> |
|
|
<span class="text-white font-semibold">My Flutter App</span> |
|
|
</div> |
|
|
<div class="p-4 h-full flex items-center justify-center"> |
|
|
<div class="text-center"> |
|
|
<i data-feather="smile" class="w-16 h-16 text-purple-600 mx-auto mb-4"></i> |
|
|
<h3 class="text-xl font-bold text-gray-800 mb-2">Hello Flutter!</h3> |
|
|
<p class="text-gray-600 text-sm">Your app is running perfectly</p> |
|
|
</div> |
|
|
</div> |
|
|
<div class="absolute bottom-4 left-4 right-4"> |
|
|
<button class="w-full bg-purple-600 text-white py-3 rounded-lg font-semibold hover:bg-purple-700 transition"> |
|
|
Get Started |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="bg-white rounded-xl shadow-lg p-6"> |
|
|
<h3 class="text-lg font-semibold text-gray-800 mb-4">Properties</h3> |
|
|
<div class="space-y-4"> |
|
|
<div> |
|
|
<label class="block text-sm font-medium text-gray-700 mb-1">Widget Type</label> |
|
|
<input type="text" value="Scaffold" class="w-full p-2 border border-gray-300 rounded-lg" readonly> |
|
|
</div> |
|
|
<div> |
|
|
<label class="block text-sm font-medium text-gray-700 mb-1">Background Color</label> |
|
|
<div class="flex space-x-2"> |
|
|
<div class="w-8 h-8 bg-white border rounded cursor-pointer"></div> |
|
|
<div class="w-8 h-8 bg-purple-600 rounded cursor-pointer border-2 border-purple-700"></div> |
|
|
<div class="w-8 h-8 bg-gray-100 rounded cursor-pointer"></div> |
|
|
<div class="w-8 h-8 bg-blue-500 rounded cursor-pointer"></div> |
|
|
</div> |
|
|
</div> |
|
|
<div> |
|
|
<label class="block text-sm font-medium text-gray-700 mb-1">Text Content</label> |
|
|
<input type="text" value="Hello Flutter!" class="w-full p-2 border border-gray-300 rounded-lg"> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="fixed bottom-8 right-8"> |
|
|
<button class="bg-purple-600 text-white p-4 rounded-full shadow-lg hover:bg-purple-700 transition transform hover:scale-110"> |
|
|
<i data-feather="plus" class="w-6 h-6"></i> |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
<script> |
|
|
|
|
|
VANTA.GLOBE({ |
|
|
el: "body", |
|
|
mouseControls: true, |
|
|
touchControls: true, |
|
|
gyroControls: false, |
|
|
minHeight: 200.00, |
|
|
minWidth: 200.00, |
|
|
scale: 1.00, |
|
|
scaleMobile: 1.00, |
|
|
color: 0x764ba2, |
|
|
backgroundColor: 0xf7fafc |
|
|
}); |
|
|
</script> |
|
|
<script> |
|
|
feather.replace(); |
|
|
</script> |
|
|
</body> |
|
|
</html> |
|
|
|