شارك المقالة

زر تسجيل صوتي مثل WhatsApp في Flutter باستخدام animated_chat_record_button

في تطبيقات المراسلة والتطبيقات الاجتماعية، أصبحت ميزة إرسال الرسائل الصوتية من العناصر الأساسية التي يتوقعها المستخدم. لكن بناء زر تسجيل صوتي احترافي من الصفر قد يستغرق وقتًا طويلًا، خصوصًا إذا كنت تريد تجربة مشابهة لتطبيق WhatsApp.

هنا تأتي مكتبة animated_chat_record_button في Flutter، حيث توفر زر تسجيل صوتي متحرك وجاهز للاستخدام، مع دعم السحب للإلغاء، القفل للتسجيل المستمر، والتحول التلقائي إلى زر إرسال عند وجود نص.

ما هي مكتبة animated_chat_record_button؟

مكتبة animated_chat_record_button هي حزمة Flutter تقدم مكوّن واجهة مستخدم جاهزًا لإنشاء زر تسجيل صوتي متحرك داخل تطبيقات الدردشة. تعتمد المكتبة على تجربة مألوفة للمستخدمين تشبه WhatsApp، مما يجعلها خيارًا مناسبًا لتطبيقات المحادثات والتواصل الاجتماعي.

الميزات الرئيسية

  • واجهة تسجيل صوتي شبيهة بتطبيق WhatsApp.
  • تحويل زر الميكروفون إلى زر إرسال عند وجود نص.
  • التسجيل بالضغط المطوّل.
  • السحب للأعلى لقفل التسجيل بدون الاستمرار بالضغط.
  • السحب لليسار لإلغاء التسجيل.
  • حفظ التسجيلات بصيغة AAC افتراضيًا.
  • إمكانية تخصيص الألوان، الحجم، الأيقونات، وحقل النص.
  • دعم Android و iOS.

تثبيت المكتبة

لإضافة المكتبة إلى مشروع Flutter، افتح ملف pubspec.yaml وأضف:

dependencies:
  animated_chat_record_button: ^0.0.4

مثال على استخدام المكتبة

يوضح المثال التالي طريقة بسيطة لاستخدام زر التسجيل داخل شاشة Flutter:

import 'package:flutter/material.dart';
import 'package:animated_chat_record_button/animated_chat_record_button.dart';

class ChatExample extends StatefulWidget {
  @override
  _ChatExampleState createState() => _ChatExampleState();
}

class _ChatExampleState extends State<ChatExample> {
  TextEditingController controller = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: [
          AnimatedChatRecordButton(
            config: RecordButtonConfig(recordButtonSize: 45),
            textEditingController: controller,
            onSend: (text) {
              print('Send: $text');
            },
            onRecordingEnd: (file) {
              print('Recorded file: ${file?.path}');
            },
          ),
        ],
      ),
    );
  }
}

إعداد الصلاحيات على Android

قبل تشغيل ميزة التسجيل الصوتي، يجب إضافة صلاحية الميكروفون داخل ملف:

android/app/src/main/AndroidManifest.xml
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

يفضل طلب أقل عدد ممكن من الصلاحيات، وعدم استخدام صلاحيات التخزين إلا إذا كان التطبيق يحتاجها فعلًا.

إعداد الصلاحيات على iOS

على iOS يجب إضافة وصف لاستخدام الميكروفون داخل ملف Info.plist:

<key>NSMicrophoneUsageDescription</key>
<string>هذا التطبيق يحتاج الوصول إلى الميكروفون لتسجيل الرسائل الصوتية</string>

صيغة التسجيل ومكان التخزين

بشكل افتراضي، تحفظ المكتبة التسجيلات الصوتية بصيغة AAC، ويكون المسار الافتراضي قريبًا من:

/storage/emulated/0/Android/data/your.package.name/files/recording_[timestamp].aac

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

تخصيص تصميم الزر

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

  • firstRecordButtonColor: لون الزر الأساسي.
  • secondRecordButtonColor: اللون الثانوي.
  • recordButtonSize: حجم زر التسجيل.
  • recordButtonScaleVal: قيمة التكبير أثناء التسجيل.
  • hint: النص الإرشادي داخل حقل الكتابة.
  • style: تنسيق النص.
  • padding: الهوامش الداخلية.

أفضل الممارسات عند استخدام المكتبة

  • اطلب صلاحية الميكروفون قبل بدء التسجيل.
  • تعامل مع حالة رفض المستخدم للصلاحية برسالة واضحة.
  • لا تطلب صلاحيات التخزين إذا كنت تستخدم مسارات التطبيق الخاصة.
  • حرر موارد التسجيل بعد الانتهاء.
  • اختبر التسجيل على أجهزة Android و iOS فعلية.
  • اضغط حجم الملفات الصوتية إذا كنت سترفعها إلى الخادم.

المميزات

  • واجهة جاهزة شبيهة بواتساب.
  • تجربة مستخدم مألوفة وسهلة.
  • دعم السحب للإلغاء والقفل للتسجيل.
  • إخراج صوتي بصيغة AAC.
  • قابلية تخصيص جيدة.

العيوب أو الملاحظات

  • قد تزيد بعض الاعتمادات من حجم التطبيق.
  • تحتاج إدارة دقيقة للصلاحيات.
  • يجب التأكد من توافق مكتبات مثل ffmpeg و audioplayers مع مشروعك.
  • قد تحتاج إلى تخصيص إضافي للتطبيقات ذات التصميم المعقد.

اعتبارات الأمان والخصوصية

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

الخلاصة

تعد مكتبة animated_chat_record_button خيارًا عمليًا لمطوري Flutter الذين يريدون إضافة زر تسجيل صوتي متحرك يشبه WhatsApp بسرعة وسهولة. توفر المكتبة تجربة استخدام مألوفة، مع دعم القفل، الإلغاء بالسحب، والتخصيص البصري.

ومع ذلك، للحصول على أفضل نتيجة، يجب الاهتمام بإدارة الصلاحيات، تحسين حجم الملفات، والتأكد من حماية التسجيلات الصوتية إذا كانت تحتوي على بيانات حساسة.



لمريد من المقالات البرمجيه شاهد : هل تواجه مشكلة مساحة التخزين بسبب باكدجات Flutter المتراكمة في مشاريعك المتعددة؟
شاهد أيضًا
مقالات ذات صلة

🚫 مانع الإعلانات مفعل

يجب إيقاف مانع الإعلانات لاستكمال تصفح الموقع