اظهار رسالة بتحديث التطبيق عندما يتم اصدار نسخة جديده من تطبيقك في flutter

اظهار رسالة بتحديث التطبيق عندما يتم اصدار نسخة جديده من تطبيقك في flutter

اظهار رسالة بتحديث التطبيق عندما يتم اصدار نسخة جديده من تطبيقك في flutter

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


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


package's pubspec


dependencies:

  in_app_update: ^3.0.0


How to show update dialog in flutter


بعد تشغيل التطبيق استخدم المكتبة في الصفحة الرئيسيه من اجل التعرف على الاصدار الخاص بالتطبيق والاصدار الجديد منه لكي يستطيع معرفة هل الاصدار الحالي هو اخر اصدار ام يوجد اصدار احدث منه وبناء على الاجابة سوف يظهر لك رسالة تخبرك بان تقوم بالتحديث ام لا يظهر الرساله وكل هذا يكون عن طريق المكتبة .


How to show update dialog in flutter

ui.dart


import 'dart:async';

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

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  AppUpdateInfo? _updateInfo;

  GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey();

  bool _flexibleUpdateAvailable = false;

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> checkForUpdate() async {
    InAppUpdate.checkForUpdate().then((info) {
      setState(() {
        _updateInfo = info;
      });
    }).catchError((e) {
      showSnack(e.toString());
    });
  }

  void showSnack(String text) {
    if (_scaffoldKey.currentContext != null) {
      ScaffoldMessenger.of(_scaffoldKey.currentContext!)
          .showSnackBar(SnackBar(content: Text(text)));
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        key: _scaffoldKey,
        appBar: AppBar(
          title: const Text('In App Update Example App'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Column(
            children: <Widget>[
              Center(
                child: Text('Update info: $_updateInfo'),
              ),
              ElevatedButton(
                child: Text('Check for Update'),
                onPressed: () => checkForUpdate(),
              ),
              ElevatedButton(
                child: Text('Perform immediate update'),
                onPressed: _updateInfo?.updateAvailability ==
                        UpdateAvailability.updateAvailable
                    ? () {
                        InAppUpdate.performImmediateUpdate()
                            .catchError((e) => showSnack(e.toString()));
                      }
                    : null,
              ),
              ElevatedButton(
                child: Text('Start flexible update'),
                onPressed: _updateInfo?.updateAvailability ==
                        UpdateAvailability.updateAvailable
                    ? () {
                        InAppUpdate.startFlexibleUpdate().then((_) {
                          setState(() {
                            _flexibleUpdateAvailable = true;
                          });
                        }).catchError((e) {
                          showSnack(e.toString());
                        });
                      }
                    : null,
              ),
              ElevatedButton(
                child: Text('Complete flexible update'),
                onPressed: !_flexibleUpdateAvailable
                    ? null
                    : () {
                        InAppUpdate.completeFlexibleUpdate().then((_) {
                          showSnack("Success!");
                        }).catchError((e) {
                          showSnack(e.toString());
                        });
                      },
              )
            ],
          ),
        ),
      ),
    );
  }
}


android sdk manager تحميل flutter developers applications create app android android studio mac


تعليقات