اذهب إلى المحتوى
  • 0

مشكلة في تغير موقع ايقونة floatingActionButton: SpeedDial بعد تغير للغة التطبيق كامل

مروان مروان4

السؤال

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

تحيه طيبه للجميع 

ي اخوان انا قمت بتغير للغة التطبيق او قمت بتمكين المستخدم من اختيار للغة التطبيق التي يفضلها ومع اختيار اللغة العربية يتم تغير اتجاه محتويات الصفحة من اليسار الى اليمين والعكس صحيح ايضا 

المشكلة الان لما استخدم floatingActionButton العادي مع تغير اللغة يتغير موقع الايقونة يمين يسار يسار يمين ..الخ

ولكن لما استخدم floatingActionButton : SpeedDial  موقع الايقونة لا يتغير مع تغير اللغة كل محتويات الصفحة يتغير اتجاها ما عدا هذا الايقونة

هل يوجد لدى احدكم حل ؟

 

صورة تبين استخدام floatingActionButton العادي

lXGmT.thumb.jpg.dbe8e1e44b74ad6f9a3f9609d473fd91.jpg

 

الموقع صحيح فيها 5f8c78a13a6a0_Screenshot_-.thumb.jpg.4462f4d6b9241c51c597589d9d33ad50.jpg

الان صورة تبين المشكلة 

 

كود الصفحة كامل:

 



import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';





void main() {
  runApp(
    EasyLocalization(
      saveLocale: true,
      supportedLocales: [
        Locale('en', 'US'),
        Locale('ar', 'SA')],
      path: 'assets/translations',
      fallbackLocale: Locale('en', 'US'),
      child: SecondScreens(),

    ),

  );

}

class SecondScreens extends StatefulWidget {

  @override
  mainStates createState() => new mainStates();
}

class mainStates extends State<SecondScreens> {


  @override
  Widget build(BuildContext context) {

    {
      return MaterialApp(
        localizationsDelegates:EasyLocalization.of(context).delegates,
        supportedLocales: EasyLocalization.of(context).supportedLocales,
        locale: EasyLocalization.of(context).locale,

        home: Scaffold(
          floatingActionButton:
               SpeedDial(
            animatedIcon: AnimatedIcons.menu_close,
            shape: CircleBorder(),
            children: [
              SpeedDialChild(
                  child: Icon(Icons.edit),
                  backgroundColor: const Color(0xFFf6c626),
                  label: 'Edit',
                  ),
            ],
          ),


        ),

      );

    }
  }
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

مرحبا مروان . 
الحل بسيط هنا .  و هو استخدام  ال flatactionbutton العادي مع بعض التعديلات  بدلاً  من استخدام  ال SpeedDial  . بحيث سوف يتم تغير الموقع الخاص به كلما غيرت اللغة المستخدمة . حيث أنيي أظن  ان  خاصية ال SpeedDial   هي مكتبة مقتصرة على التطبيقات باللغة الأنجليزية (مع العلم أنه  يمكن التعديل عليها من الكود  الأصلي) ولكن هذه الطريقة التي أرفقتها لك  في الكود  أكثر جمالاً  و ترتيباً و تلبي الغرض المنوط  به .  

شكراً لك 

import 'package:flutter/material.dart';
import 'dart:math' as math;

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  State createState() => new MyHomePageState();
}

class MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
  AnimationController _controller;

  static const List<IconData> icons = const [ Icons.sms, Icons.mail, Icons.phone ];

  @override
  void initState() {
    _controller = new AnimationController(
      vsync: this,
      duration: const Duration(milliseconds: 500),
    );
  }

  Widget build(BuildContext context) {
    Color backgroundColor = Theme.of(context).cardColor;
    Color foregroundColor = Theme.of(context).accentColor;
    return new Scaffold(
      appBar: new AppBar(title: new Text('Speed Dial Example')),
      floatingActionButton: new Column(
        mainAxisSize: MainAxisSize.min,
        children: new List.generate(icons.length, (int index) {
          Widget child = new Container(
            height: 70.0,
            width: 56.0,
            alignment: FractionalOffset.topCenter,
            child: new ScaleTransition(
              scale: new CurvedAnimation(
                parent: _controller,
                curve: new Interval(
                  0.0,
                  1.0 - index / icons.length / 2.0,
                  curve: Curves.easeOut
                ),
              ),
              child: new FloatingActionButton(
                heroTag: null,
                backgroundColor: backgroundColor,
                mini: true,
                child: new Icon(icons[index], color: foregroundColor),
                onPressed: () {},
              ),
            ),
          );
          return child;
        }).toList()..add(
          new FloatingActionButton(
            heroTag: null,
            child: new AnimatedBuilder(
              animation: _controller,
              builder: (BuildContext context, Widget child) {
                return new Transform(
                  transform: new Matrix4.rotationZ(_controller.value * 0.5 * math.pi),
                  alignment: FractionalOffset.center,
                  child: new Icon(_controller.isDismissed ? Icons.share : Icons.close),
                );
              },
            ),
            onPressed: () {
              if (_controller.isDismissed) {
                _controller.forward();
              } else {
                _controller.reverse();
              }
            },
          ),
        ),
      ),
    );
  }
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 6 دقائق مضت قال ماجد قطوسة:

مرحبا مروان . 
الحل بسيط هنا .  و هو استخدام  ال flatactionbutton العادي مع بعض التعديلات  بدلاً  من استخدام  ال SpeedDial  . بحيث سوف يتم تغير الموقع الخاص به كلما غيرت اللغة المستخدمة . حيث أنيي أظن  ان  خاصية ال SpeedDial   هي مكتبة مقتصرة على التطبيقات باللغة الأنجليزية (مع العلم أنه  يمكن التعديل عليها من الكود  الأصلي) ولكن هذه الطريقة التي أرفقتها لك  في الكود  أكثر جمالاً  و ترتيباً و تلبي الغرض المنوط  به .  

شكراً لك 


import 'package:flutter/material.dart';
import 'dart:math' as math;

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  State createState() => new MyHomePageState();
}

class MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
  AnimationController _controller;

  static const List<IconData> icons = const [ Icons.sms, Icons.mail, Icons.phone ];

  @override
  void initState() {
    _controller = new AnimationController(
      vsync: this,
      duration: const Duration(milliseconds: 500),
    );
  }

  Widget build(BuildContext context) {
    Color backgroundColor = Theme.of(context).cardColor;
    Color foregroundColor = Theme.of(context).accentColor;
    return new Scaffold(
      appBar: new AppBar(title: new Text('Speed Dial Example')),
      floatingActionButton: new Column(
        mainAxisSize: MainAxisSize.min,
        children: new List.generate(icons.length, (int index) {
          Widget child = new Container(
            height: 70.0,
            width: 56.0,
            alignment: FractionalOffset.topCenter,
            child: new ScaleTransition(
 

 

اهلا بك الغالي

الكود ناقص عزيزي ارجو التكرم بستكماله 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 12 دقائق مضت قال ماجد قطوسة:

مرحبا مروان . 
الحل بسيط هنا .  و هو استخدام  ال flatactionbutton العادي مع بعض التعديلات  بدلاً  من استخدام  ال SpeedDial  . بحيث سوف يتم تغير الموقع الخاص به كلما غيرت اللغة المستخدمة . حيث أنيي أظن  ان  خاصية ال SpeedDial   هي مكتبة مقتصرة على التطبيقات باللغة الأنجليزية (مع العلم أنه  يمكن التعديل عليها من الكود  الأصلي) ولكن هذه الطريقة التي أرفقتها لك  في الكود  أكثر جمالاً  و ترتيباً و تلبي الغرض المنوط  به .  

شكراً لك 


import 'package:flutter/material.dart';
import 'dart:math' as math;

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  State createState() => new MyHomePageState();
}

class MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
  AnimationController _controller;

  static const List<IconData> icons = const [ Icons.sms, Icons.mail, Icons.phone ];

  @override
  void initState() {
    _controller = new AnimationController(
      vsync: this,
      duration: const Duration(milliseconds: 500),
    );
  }

  Widget build(BuildContext context) {
    Color backgroundColor = Theme.of(context).cardColor;
    Color foregroundColor = Theme.of(context).accentColor;
    return new Scaffold(
      appBar: new AppBar(title: new Text('Speed Dial Example')),
      floatingActionButton: new Column(
        mainAxisSize: MainAxisSize.min,
        children: new List.generate(icons.length, (int index) {
          Widget child = new Container(
            height: 70.0,
            width: 56.0,
            alignment: FractionalOffset.topCenter,
            child: new ScaleTransition(
              scale: new CurvedAnimation(
                parent: _controller,
                curve: new Interval(
                  0.0,
                  1.0 - index / icons.length / 2.0,
                  curve: Curves.easeOut
                ),
              ),
              child: new FloatingActionButton(
                heroTag: null,
                backgroundColor: backgroundColor,
                mini: true,
                child: new Icon(icons[index], color: foregroundColor),
                onPressed: () {},
              ),
            ),
          );
          return child;
        }).toList()..add(
          new FloatingActionButton(
            heroTag: null,
            child: new AnimatedBuilder(
              animation: _controller,
              builder: (BuildContext context, Widget child) {
                return new Transform(
                  transform: new Matrix4.rotationZ(_controller.value * 0.5 * math.pi),
                  alignment: FractionalOffset.center,
                  child: new Icon(_controller.isDismissed ? Icons.share : Icons.close),
                );
              },
            ),
            onPressed: () {
              if (_controller.isDismissed) {
                _controller.forward();
              } else {
                _controller.reverse();
              }
            },
          ),
        ),
      ),
    );
  }
}

 

هلا بك عزيزي

اول شي يعطيك الف صحه وعافيه يا رب 

الكود شغال 100%100

ولكن استفسار الان لدي 3 ايقونات منبثقة 

اذا احتاج اعمل onPressed لكل ايقونة منبثقه كيف ممكن نعملها لني بحثت في الكود ولم اجد مكان لهن

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

الله يعافيك أخي . 

onPressed  موجود هنا في هذا الكود .  ولكن  تستطيع أن تنفذ الكود بأكثر من  طريقة و هذا هي أحدى الطرق .  يمكنك  أن  تجري تجاربك على الكود و أن تعدل به بناءً  على رغبتك  .  
__________
ولا تنسى الـ GestureDetector  فهي تكون  مفيدة جداً  بعض الحالات  . 

شكراً لك . 

  child: new FloatingActionButton(
                heroTag: null,
                backgroundColor: backgroundColor,
                mini: true,
                child: new Icon(icons[index], color: foregroundColor),
                onPressed: () {},
              ),

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...