ولّد تطبيق Flutter من تطبيق Tomato الخاص بك
- نُشر في
- مدة القراءة
- 3 دقائق قراءة
حوّل عمليات CRUD في TomatoPHP إلى تطبيق Flutter يعمل: ثبّت tomato-flutter، ونفّذ أمر Artisan واحدًا، واربطه بالـ API في Laravel.
في سعينا المستمر لجعل كل شيء أسهل، نطلق اليوم حزمة رائعة: تبني تطبيق Flutter بأمر واحد فقط، وتولّد CRUD كاملًا من مخطط قاعدة بياناتك ومن الملفات التي ولّدتها TomatoPHP لك بالفعل. في هذا المقال أغطي المتطلبات، والتثبيت، وكل أوامر التوليد، من تطبيق كامل وحتى CRUD منفرد، إضافة إلى كيفية توجيه التطبيق إلى الـ API الخاص بك.

المتطلبات
قبل أن تبدأ، تأكد من توفر ثلاثة أمور.
-
أن يكون Flutter مثبتًا ويعمل. تحقق من ذلك بالأمر:
flutter doctor -
أن يتوفر جهاز للتشغيل. يجب أن يكون لديك محاكٍ واحد على الأقل أو جهاز متصل بنظامك.
-
أن تعمل حزمتان من TomatoPHP في تطبيق Laravel لديك: Tomato Admin وTomato CRM.
بعد تثبيت Tomato CRM، تأكد من إضافة guard باسم accounts إلى ملف الإعدادات auth.php هكذا:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'accounts' => [
'driver' => 'session',
'provider' => 'accounts',
],
],
...
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'accounts' => [
'driver' => 'eloquent',
'model' => \TomatoPHP\TomatoCrm\Models\Account::class,
],
],
يخبر الـ guard والـ provider باسم accounts تطبيق Laravel بأن يصادق مستخدمي تطبيق الهاتف عبر نموذج Account في Tomato CRM، بشكل منفصل عن مستخدمي لوحة التحكم users.
التثبيت
أضف الحزمة:
composer require tomatophp/tomato-flutter
أنت الآن جاهز لتوليد تطبيق جديد.
أوامر التوليد
توليد تطبيق
لتوليد تطبيق جديد نفّذ:
php artisan tomato-flutter:generate
توليد Module
لتوليد module جديد نفّذ:
php artisan tomato-flutter:module
توليد Controller
لتوليد controller جديد نفّذ:
php artisan tomato-flutter:controller
توليد Service
لتوليد service جديدة نفّذ:
php artisan tomato-flutter:service
توليد CRUD
لتوليد CRUD جديد من أي جدول ضمن عمليات الـ CRUD التي ولّدتها TomatoPHP نفّذ:
php artisan tomato-flutter:crud
لاحظ أن الملفات المولَّدة تتوافق فقط مع الـ APIs التي تولّدها TomatoPHP، وأنك تحتاج إلى إضافة مسارات الـ API إلى api.php:
Route::middleware(['auth:sanctum'])->name('api.')->group(function () {
Route::get('customers', [\Modules\Customers\Http\Controllers\CustomerController::class, 'index'])->name('customers.index');
Route::post('customers', [\Modules\Customers\Http\Controllers\CustomerController::class, 'store'])->name('customers.store');
Route::get('customers/{model}', [\Modules\Customers\Http\Controllers\CustomerController::class, 'show'])->name('customers.show');
Route::post('customers/{model}', [\Modules\Customers\Http\Controllers\CustomerController::class, 'update'])->name('customers.update');
Route::delete('customers/{model}', [\Modules\Customers\Http\Controllers\CustomerController::class, 'destroy'])->name('customers.destroy');
});
تكشف هذه المسارات عمليات index وstore وshow وupdate وdestroy في الـ controller المولَّد خلف مصادقة Sanctum، وهي بالضبط ما تستدعيه شاشات Flutter المولَّدة.
تغيير الـ Endpoint
لكي يتصل التطبيق برابطك الخاص، غيّر الـ endpoint من هذا الملف:
flutter/YOUR_APP/lib/config/Config.dart
إن كنت تختبر التطبيق على محاكي Android فوجّه الـ endpoint إلى http://10.0.2.2:8000/api، ثم نفّذ:
php artisan serv
داخل تطبيق Laravel لديك.
الخلاصة
مع وجود Tomato Admin وTomato CRM، تكفي حزمة واحدة وبضعة أوامر Artisan لتحويل عمليات الـ CRUD التي ولّدتها بالفعل في Laravel إلى تطبيق Flutter يعمل، بكل ما فيه من modules وcontrollers وservices وشاشات مربوطة بالـ API الخاص بـ TomatoPHP.