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

مشكلة في (convex_bottom_bar) في فلاتر

Mo02

السؤال

السلام عليكم.

أود المساعدة في حل مشكلة خاصة بتنصيب ( convex_bottom_bar ) .

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

حاولت بكثير من الطرق إصلاح المشكلة لكن دون جدوى، وأرجو بأن أجد الحل لديكم.

تلك هى الأكواد المرجعية:

جزيل الشكر لكم.

class DashboardScreenState extends State<DashboardScreen> {
  PageController? _pageController;
  int _pageIndex = 0;
  late List<Widget> _screens;
  final GlobalKey<ScaffoldMessengerState> _scaffoldKey = GlobalKey();

  @override
  void initState() {
    super.initState();

    _screens = [
      const HomeScreen(),
      const FavouriteScreen(),
      const CartScreen(),
      const MenuScreenNew()
    ];
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        key: _scaffoldKey,
        bottomNavigationBar:
        ConvexAppBar(
          items:  const [
            TabItem(icon: Icons.home, title: 'Home'),
            TabItem(icon: Icons.favorite, title: 'Like'),
            TabItem(icon: Icons.shopping_basket_rounded, title:'Cart'),
            TabItem(icon: Icons.person, title: 'Profile'),
          ],

          initialActiveIndex: _pageIndex,
          onTap: (int index){
            setState(() {
              _pageIndex = index;
            });
          },
        ),
        body:
           PageView.builder(
              controller: _pageController,
              itemCount: _screens.length,
              physics: const NeverScrollableScrollPhysics(),
              itemBuilder: (context, index) {
                return _screens[_pageIndex];
              },
            ),
      );
  }
}

 

تم التعديل في بواسطة Mo Mo3
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

أنت لا تستخدم onTap لتغيير مؤشر الصفحة، وذلك يعمل بشكل جيد عند التنقل للأمام، ولكن عند التنقل للخلف، فإن onTap لا يتم استدعاؤه.

ويجب عليك استخدام onTapUp بدلاً من onTap، حيث أن onTapUp يتم استدعاؤه عندما يتم رفع الإصبع عن الزر، بغض النظر عن اتجاه التنقل.

class DashboardScreenState extends State<DashboardScreen> {
  PageController? _pageController;
  int _pageIndex = 0;
  late List<Widget> _screens;
  final GlobalKey<ScaffoldMessengerState> _scaffoldKey = GlobalKey();

  @override
  void initState() {
    super.initState();

    _screens = [
      const HomeScreen(),
      const FavouriteScreen(),
      const CartScreen(),
      const MenuScreenNew()
    ];
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        key: _scaffoldKey,
        bottomNavigationBar:
        ConvexAppBar(
          items:  const [
            TabItem(icon: Icons.home, title: 'Home'),
            TabItem(icon: Icons.favorite, title: 'Like'),
            TabItem(icon: Icons.shopping_basket_rounded, title:'Cart'),
            TabItem(icon: Icons.person, title: 'Profile'),
          ],

          initialActiveIndex: _pageIndex,
          onTapUp: (int index){
            setState(() {
              _pageIndex = index;
            });
          },
        ),
        body:
           PageView.builder(
              controller: _pageController,
              itemCount: _screens.length,
              physics: const NeverScrollableScrollPhysics(),
              itemBuilder: (context, index) {
                return _screens[_pageIndex];
              },
            ),
      );
  }
}

وتستطيع أيضًا استخدام onPageChanged لتغيير مؤشر الصفحة عند التنقل للخلف، لأن onPageChanged يتم استدعاؤه عندما يتغير مؤشر الصفحة، بغض النظر عن اتجاه التنقل.

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...