مبرمج Flutter لتجميع ورفع تطبيق أدوات PDF على متجري App Store و Google Play عالمياً

تفاصيل المشروع

نص تفاصيل المشروع والأكواد (انسخ من هنا):

عنوان المشروع:

مطلوب مبرمج Flutter لتجميع ورفع تطبيق أدوات PDF على متجري App Store و Google Play عالمياً

تفاصيل المشروع:

السلام عليكم ورحمة الله وبركاته،

لدي مشروع تطبيق متكامل لأدوات الـ PDF (يحتوي على: مسح ضوئي، دمج، ضغط، توقيع ملون وعادي، شاشة اشتراكات ودفع، وشاشة إعدادات وحساب). التطبيق مبني باستخدام إطار عمل Flutter ليعمل على النظامين (iOS و Android) والهواتف والأجهزة اللوحية.

الأكواد البرمجية الأساسية للواجهات والخدمات (Front-end & Services) جاهزة ومكتوبة بالكامل ومرفقة أدناه. والمطلوب من المبرمج هو تجميعها، ربطها، واختبارها ثم رفعها على حسابات المطورين الخاصة بي.

? أولاً: الأكواد البرمجية الكاملة للتطبيق

--- 1. ملف main.dart ---

Dart

import 'package:flutter/material.dart';

void main() {

runApp(const MyApp());

}

class MyApp extends StatelessWidget {

const MyApp({super.key});

@override

Widget build(BuildContext context) {

return MaterialApp(

title: 'PDF Tools Ultra',

debugShowCheckedModeBanner: false,

theme: ThemeData(

primarySwatch: Colors.deepPurple,

useMaterial3: true,

),

home: const Scaffold(

body: Center(child: Text('جاري تحميل التطبيق...')),

),

);

}

}

--- 2. ملف home_screen.dart ---

Dart

import 'package:flutter/material.dart';

class HomeScreen extends StatelessWidget {

const HomeScreen({super.key});

@override

Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(

title: const Text('حقيبة أدوات PDF', style: TextStyle(fontWeight: FontWeight.bold)),

centerTitle: true,

elevation: 0,

backgroundColor: Colors.white,

foregroundColor: Colors.black,

),

body: Padding(

padding: const EdgeInsets.all(16.0),

child: GridView.count(

crossAxisCount: 2,

crossAxisSpacing: 16,

mainAxisSpacing: 16,

children: [

_buildToolCard(Icons.document_scanner, 'مسح ضوئي', Colors.blue),

_buildToolCard(Icons.merge_type, 'دمج ملفات PDF', Colors.green),

_buildToolCard(Icons.compress, 'ضغط ملف PDF', Colors.orange),

_buildToolCard(Icons.draw, 'توقيع المستند', Colors.purple),

],

),

),

);

}

Widget _buildToolCard(IconData icon, String title, Color color) {

return Card(

elevation: 4,

shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)),

child: InkWell(

onTap: () {},

borderRadius: BorderRadius.circular(16),

child: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: [

Icon(icon, size: 50, color: color),

const SizedBox(height: 12),

Text(title, style: const TextStyle(fontSize: 16, fontWeight: FontWeight.bold)),

],

),

),

);

}

}

--- 3. ملف scanner_service.dart ---

Dart

import 'dart:io';

import 'package:flutter/material.dart';

import 'package:image_picker/image_picker.dart';

class ScannerService {

final ImagePicker _picker = ImagePicker();

// فتح الكاميرا لمسح المستندات ضوئياً

async Future<File?> scanDocument(BuildContext context) async {

final XFile? photo = await _picker.pickImage(source: ImageSource.camera, imageQuality: 85);

if (photo != null) {

return File(photo.path);

}

return null;

}

}

--- 4. ملف paywall_screen.dart ---

Dart

import 'package:flutter/material.dart';

class PaywallScreen extends StatelessWidget {

const PaywallScreen({super.key});

@override

Widget build(BuildContext context) {

return Scaffold(

backgroundColor: Colors.white,

body: SafeArea(

child: Padding(

padding: const EdgeInsets.all(24.0),

child: Column(

crossAxisAlignment: CrossAxisAlignment.stretch,

children: [

const Icon(Icons.star, size: 80, color: Colors.amber),

const SizedBox(height: 16),

const Text('اشترك في النسخة الكاملة', textAlign: TextAlign.center, style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold)),

const SizedBox(height: 24),

_buildPlanCard('الاشتراك الشهري', '19.99 ريال / شهرياً', 'تجديد تلقائي'),

const SizedBox(height: 12),

_buildPlanCard('الاشتراك السنوي', '149.99 ريال / سنوياً', 'توفير 40% + 3 أيام تجربة مجانية'),

const Spacer(),

ElevatedButton(

style: ElevatedButton.styleFrom(

backgroundColor: const Color(0xff6200EE),

padding: const EdgeInsets.symmetric(vertical: 16),

shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),

),

onPressed: () {},

child: const Text('اشترك الآن', style: TextStyle(color: Colors.white, fontSize: 18, fontWeight: FontWeight.bold)),

),

],

),

),

),

);

}

Widget _buildPlanCard(String title, String price, String sub) {

return Container(

padding: const EdgeInsets.all(16),

decoration: BoxDecoration(

border: Border.all(color: Colors.grey.shade300, width: 2),

borderRadius: BorderRadius.circular(12),

),

child: Column(

crossAxisAlignment: CrossAxisAlignment.start,

children: [

Text(title, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),

Text(price, style: const TextStyle(fontSize: 16, color: Colors.green, fontWeight: FontWeight.w600)),

Text(sub, style: const TextStyle(fontSize: 12, color: Colors.grey)),

],

),

);

}

}

--- 5. ملف pdf_service.dart ---

Dart

import 'dart:io';

class PdfService {

// محرك دمج ملفات PDF متعددة

async Future<File?> mergePdfFiles(List<File> files) async {

// كود الدمج البرمجي عبر مكتبة معالجة الملفات محلياً

return null;

}

// محرك ضغط حجم ملفات PDF

async Future<File?> compressPdfFile(File file) async {

// كود تقليل الحجم والمعالجة المحلية

return null;

}

}

--- 6. ملف signature_screen.dart ---

Dart

import 'dart:typed_data';

import 'package:flutter/material.dart';

import 'package:signature/signature.dart';

class SignatureScreen extends StatefulWidget {

const SignatureScreen({super.key});

@override

State<SignatureScreen> createState() => _SignatureScreenState();

}

class _SignatureScreenState extends State<SignatureScreen> {

late SignatureController _controller;

Color _selectedColor = Colors.black;

double _strokeWidth = 4.0;

@override

void initState() {

super.initState();

_initController();

}

void _initController() {

_controller = SignatureController(

penStrokeWidth: _strokeWidth,

penColor: _selectedColor,

exportBackgroundColor: Colors.transparent,

);

}

@override

Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(

title: const Text('إنشاء توقيعك الخاص', style: TextStyle(fontWeight: FontWeight.bold)),

backgroundColor: Colors.white,

foregroundColor: Colors.black,

elevation: 0,

actions: [

IconButton(icon: const Icon(Icons.clear, color: Colors.red), onPressed: () => _controller.clear())

],

),

body: Column(

children: [

Expanded(

child: Container(

margin: const EdgeInsets.all(16),

decoration: BoxDecoration(

color: Colors.grey.withOpacity(0.05),

borderRadius: BorderRadius.circular(16),

border: Border.all(color: Colors.grey.shade300),

),

child: Signature(controller: _controller, backgroundColor: Colors.transparent),

),

),

Padding(

padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 16),

child: Row(

mainAxisAlignment: MainAxisAlignment.spaceBetween,

children: [

Row(

children: [

_buildColorButton(Colors.black, 'عادي'),

const SizedBox(width: 8),

_buildColorButton(Colors.blue, 'أزرق'),

const SizedBox(width: 8),

_buildColorButton(Colors.red, 'أحمر'),

],

),

ElevatedButton.icon(

style: ElevatedButton.styleFrom(backgroundColor: const Color(0xff6200EE)),

icon: const Icon(Icons.check, color: Colors.white),

label: const Text('اعتماد التوقيع', style: TextStyle(color: Colors.white)),

onPressed: () async {

if (_controller.isNotEmpty) {

final Uint8List? signatureData = await _controller.toPngBytes();

if (signatureData != null) {

Navigator.pop(context, signatureData);

}

}

},

),

],

),

),

],

),

);

}

Widget _buildColorButton(Color color, String label) {

bool isSelected = _selectedColor == color;

return InkWell(

onTap: () {

setState(() {

_selectedColor = color;

_controller = SignatureController(penStrokeWidth: _strokeWidth, penColor: _selectedColor, exportBackgroundColor: Colors.transparent, points: _controller.points);

});

},

child: Chip(backgroundColor: isSelected ? color : Colors.grey.shade200, label: Text(label, style: TextStyle(color: isSelected ? Colors.white : Colors.black87))),

);

}

}

--- 7. ملف profile_screen.dart ---

Dart

import 'package:flutter/material.dart';

class ProfileScreen extends StatelessWidget {

const ProfileScreen({super.key});

@override

Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(title: const Text('الإعدادات والحساب'), centerTitle: true, backgroundColor: Colors.white, foregroundColor: Colors.black, elevation: 0),

body: ListView(

padding: const EdgeInsets.all(16),

children: [

Container(

padding: const EdgeInsets.all(20),

decoration: BoxDecoration(color: const Color(0xff6200EE).withOpacity(0.05), borderRadius: BorderRadius.circular(16)),

child: Row(

children: [

const CircleAvatar(radius: 30, backgroundColor: Color(0xff6200EE), child: Icon(Icons.person, color: Colors.white)),

const SizedBox(width: 16),

Column(

crossAxisAlignment: CrossAxisAlignment.start,

children: [

const Text('مستخدم التطبيق', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),

Container(padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2), decoration: BoxDecoration(color: Colors.amber, borderRadius: BorderRadius.circular(12)), child: const Text('العضوية المميزة', style: TextStyle(fontSize: 12))),

],

)

],

),

),

const SizedBox(height: 24),

ListTile(leading: const Icon(Icons.language), title: const Text('لغة التطبيق'), subtitle: const Text('العربية')),

ListTile(leading: const Icon(Icons.contact_support_outlined), title: const Text('تواصل مع الدعم الفني')),

ListTile(leading: const Icon(Icons.rate_review_outlined), title: const Text('تقييم التطبيق على المتجر')),

],

),

);

}

}

?️ ثانياً: قائمة الطلبات والشروط التقنية المحددة للمطور

المطلوب من المبرمج المستلم للمشروع تنفيذ المهام التالية بدقة:

تجميع وضبط المشروع:

إنشاء مشروع Flutter جديد ونظيف، وتوزيع الأكواد الـ 7 المرفقة أعلاه في ملفاتها الخاصة داخل بنية المشروع بشكل منظم وقابل للتطوير مستقبلاً.

ترتيب الـ Dependencies والمكتبات اللازمة (مثل مكتبة الكاميرا، معالجة الـ PDF، ومكتبة الرسم والتوقيع) وحل أي تعارض في النسخ.

التصميم المتجاوب (Responsive Layout):

ضبط واجهات الشاشات الـ 5 لتكون متجاوبة (Responsive) تماماً لتعمل بكفاءة وسلاسة على الهواتف والأجهزة اللوحية (iPad & Android Tablets) مع مراعاة تناسق العناصر والأزرار.

تعدد اللغات والدول المستهدفة (ASO & Localization):

تهيئة التطبيق برمجياً ليدعم اللغات ديناميكياً (App Internationalization) مع دعم اتجاهات الواجهات (RTL و LTR) بناءً على لغة جهاز المستخدم أو لغة المتجر المحلي.

ضبط التطبيق ليدعم النشر في عدة متاجر محددة: (المتجر السعودي، الإماراتي، الأمريكي، السويسري، الألماني، وبقية دول العالم).

ربط نظام الاشتراكات وبوابات الدفع الرسمية (In-App Purchases):

ربط شاشة الدفع والاشتراكات بنظام المتاجر الرسمي (أبل وجوجل) مباشرة أو عبر (RevenueCat).

تفعيل خيار "الاشتراك الشهري" و "الاشتراك السنوي" مع تهيئة ميزة "الفترة التجريبية مجاناً لمدة 3 أيام" على الاشتراك السنوي.

التأكد من ظهور خيارات الدفع المحلية والعالمية تلقائياً (مثل Apple Pay على الآيفون، و Google Pay والبطاقات الائتمانية والدفع عبر الفاتورة على الأندرويد).

المعالجة المحلية والسرعة (Performance Optimization):

التأكد من أن جميع عمليات دمج وضغط وتوقيع ملفات الـ PDF تتم محلياً على معالج جهاز المستخدم (On-Device Processing) لضمان السرعة الفائقة وحماية خصوصية البيانات.

تفعيل ضغط برميجي لصور الكاميرا الملتقطة عبر الـ Scanner لضمان الحفاظ على صغر حجم ملف الـ PDF النهائي وسرعة مشاركته.

الاختبار والتسليم النهائي:

تزويدي بنسخة تجريبية للآيفون عبر TestFlight لفحصها، وملف APK لتجربة نسخة الأندرويد.

ربط التطبيق بحسابات المطورين الخاصة بي (Apple Developer & Google Play Console).

رفع وصف التطبيق وصور الشاشات المصممة باللغتين (العربية والإنجليزية) في الخانات المخصصة لكل متجر لتهيئة محركات البحث (ASO)، ثم تقديم التطبيق للمراجعة النهائية وقبوله في المتاجر.

بانتظار عروضكم الاحترافية وشاكر لكم مقدماً.

حالة المشروع
مفتوح
تاريخ النشر
الميزانية
$250.00 - $500.00
مدة التنفيذ
7 أيام
المهارات

صاحب المشروع
ناشي م.
  • مصمم ومدخل بيانات
تاريخ التسجيل
معدل التوظيف
المشاريع المفتوحة 1
مشاريع قيد التنفيذ 0
التواصلات الجارية 0

تقدم للمشروع

العروض المقدمة

أنا مطور Flutter محترف بخبرة أكثر من ثلاث سنوات في تطوير تطبيقات موبايل عالية الأداء تعمل على Android و iOS، مع خبرة قوية في العمل على مشاريع قائمة بالفعل وتطوي...

السلام عليكم ورحمة الله وبركاته، اطلعت على تفاصيل مشروع تطبيق أدوات الـ PDF المبني بـ Flutter، ويسعدني تنفيذ العمل بالكامل باحترافية. ما سأقوم به: - مراجعة وتجه...

السلام عليكم ورحمة الله وبركاته، فهمي للمطلوب المطلوب ليس فقط رفع تطبيق، بل فعليا: ? تحويل الأكواد الحالية إلى تطبيق Production جاهز للنشر عالميا على: App Store...

السلام عليكم أستاذ ناشي، معك أحمد، مهندس حاسبات ومطور تطبيقات Flutter. لقد اطلعت على الأكواد المرفقة والمتطلبات بدقة، وأنا جاهز لتحويل هذا الهيكل البرمجي إلى تط...

السلام عليكم أنا خالد بدر مطور تطبيقات باستخدام flutter ، امتلك خبره في إنشاء تطبيقات قابله للتطوير والتوسع لاني بستخدم مبادئ ال clean architecture الكود بيكون ...

السلام عليكم مع حضرتك رقيه سمير . لقد قرأت تفاصيل مشروعك وعلي أتم أستعداد لتنفيذه بدقة وجودة عالية باذن الله. لدي خبرة في تطوير المواقع الالكترونية سريعه والتطب...

أهلا بيك مساء الخير ، معاك سفيان عماد، مبرمج flutter. شفت تفاصيل المشروع والأكواد اللي حضرتك رفعتها، والفكرة ممتازة والأساس اللي محطوط كويس، بس طبعا محتاجين نرك...

إليك رد احترافي مع رابط الـ MVP: السلام عليكم ورحمة الله وبركاته أستاذ ناشي ? اطلعت على تفاصيل مشروع تطبيق PDF Tools وفهمت المطلوب بالضبط، وعشان أوضحلك قدرتي عل...

السلام عليكم ورحمة الله وبركاته، قرأت تفاصيل مشروعك بدقة، وأحييك على هذا التحديد الاحترافي لنطاق العمل . بصفتي مطورة تطبيقات متخصصة في بناء وتطوير التطبيقات عال...

السلام عليكم انا انس محمد مطور تطبيقات موبايل flutter and ios لدي خبره تتجاوز ال 7 سنوات في تطوير تطبيقات الموبايل ولدي العديد من التطبيقات علي google play and ...

السلام عليكم ورحمة الله وبركاته، اطلعت على تفاصيل مشروع تطبيق أدوات الـ PDF المطلوب تنفيذه ورفعه على App Store و Google Play، والمطلوب واضح من ناحية تجميع المشر...

السلام عليكم ورحمة الله وبركاته، مع حضرتك عمر مصطفى، مطور تطبيقات Android و iPhone باستخدام Flutter، ولدي خبرة في تجهيز التطبيقات للنشر على App Store و Google P...

اطلعت على تفاصيل مشروع تطبيق أدوات الـ PDF، وبإذن الله أستطيع تنفيذ المشروع بالكامل باحترافية باستخدام Flutter مع تجهيزه للنشر العالمي على متجري App Store و Goo...

السلام عليكم ورحمة الله وبركاته، اطلعت على تفاصيل مشروع تطبيق أدوات الـ PDF، والمشروع منظم وواضح كبنية أولية، ويمكنني تنفيذ وتجهيز التطبيق بشكل احترافي ليكون جا...

السلام عليكم ورحمة الله وبركاته، اطلعت على تفاصيل المشروع ويسعدني تنفيذ المهمة باحترافية، لدي خبرة في Flutter وتجهيز التطبيقات للنشر على App Store و Google Play...

السلام عليكم، اطلعت على تفاصيل مشروع تطبيق أدوات الـ PDF، ويمكنني تنفيذ المشروع بالكامل باستخدام Flutter مع تجهيز التطبيق للنشر الاحترافي على App Store و Google...

السلام عليكم ورحمة الله وبركاته أستاذ ناشي، اطلعت على تفاصيل المشروع والأكواد المرفقة بالكامل، وأكثر ما أعجبني هو وضوح الرؤية وتنظيم المتطلبات بشكل احترافي، لأن...

قبولك لهذا العرض يعتبر اتفاقاً بينك وبين المستقل وسيبقى موقع مستقل وسيطاً بينكما حتى تسليم المشروع. لن تتمكن من تغيير العرض أو إلغائه لاحقًا لذلك تأكد من اختيارك للعرض المناسب باتّباع النصائح التالية:

  • راجع صفحة حساب المستقل الذي اخترته واطّلع على أعماله السابقة
  • إن كانت هناك تفاصيل غير مذكورة في المشروع، فتواصل مع المستقل وأخبره بها أولًا
  • بإمكانك أن تتواصل مع المستقل وتسأله عن أية أمور تحتاجها
  • احرص دائمًا على إبقاء التواصل مع المستقل داخل الموقع قدر الإمكان وذلك لضمان حقوقك
  • لا تتردد من التواصل معنا ان احتجت لأي مساعدة، نحن نحب مساعدتك!

المستقل غير متاح لاستلام مشاريع، يمكنك ارسال تنبيه له لقبول العرض وإعادة المحاولة بعد بضعة ساعات، أو اختيار عرضاً من مستقل آخر.