Sfoglia il codice sorgente

[new]禁止首页tab滚动切换

zk 8 mesi fa
parent
commit
f85a5b1124
2 ha cambiato i file con 17 aggiunte e 9 eliminazioni
  1. 12 1
      lib/module/main/main_controller.dart
  2. 5 8
      lib/module/main/main_page.dart

+ 12 - 1
lib/module/main/main_controller.dart

@@ -3,13 +3,14 @@ import 'package:abroad_location/module/location/location_view.dart';
 import 'package:abroad_location/module/urgent/urgent_view.dart';
 import 'package:abroad_location/resource/assets.gen.dart';
 import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 import 'package:injectable/injectable.dart';
 
 import '../friend/friend_view.dart';
 
 @injectable
-class MainController extends BaseController {
+class MainController extends BaseController with GetSingleTickerProviderStateMixin {
   List<TabData> tabData = [
     TabData(Assets.images.iconMainTabLocationSelected.provider(),
         Assets.images.iconMainTabLocationUnselect.provider(), LocationView()),
@@ -23,6 +24,9 @@ class MainController extends BaseController {
 
   int get currentIndex => _currentIndex.value;
 
+  late TabController tabController = TabController(
+  length: tabData.length, vsync: this, initialIndex: _currentIndex.value);
+
   @override
   onReady() {
     precacheTabIcon();
@@ -30,6 +34,7 @@ class MainController extends BaseController {
 
 
   onTabClick(int index) {
+    tabController.animateTo(index);
     _currentIndex.value = index;
   }
 
@@ -39,6 +44,12 @@ class MainController extends BaseController {
       precacheImage(tab.unSelectIcon, Get.context!);
     }
   }
+
+  @override
+  void onClose() {
+    super.onClose();
+    tabController.dispose();
+  }
 }
 
 class TabData {

+ 5 - 8
lib/module/main/main_page.dart

@@ -23,12 +23,8 @@ class MainPage extends BasePage<MainController> {
 
   @override
   Widget buildBody(BuildContext context) {
-    return DefaultTabController(
-      initialIndex: controller.currentIndex,
-      length: controller.tabData.length,
-      child: Scaffold(
-          body: buildTabBarView(), bottomNavigationBar: buildBottomBar()),
-    );
+    return Scaffold(
+        body: buildTabBarView(), bottomNavigationBar: buildBottomBar());
   }
 
   Widget buildBottomBar() {
@@ -58,7 +54,6 @@ class MainPage extends BasePage<MainController> {
       child: Builder(builder: (context) {
         return GestureDetector(
           onTap: () {
-            DefaultTabController.of(context).animateTo(index);
             controller.onTabClick(index);
           },
           child: Obx(() {
@@ -75,7 +70,9 @@ class MainPage extends BasePage<MainController> {
   }
 
   Widget buildTabBarView() {
-    return TabBarView(children: [
+    return TabBarView(
+        physics: const NeverScrollableScrollPhysics(),
+        controller: controller.tabController, children: [
       for (int i = 0; i < controller.tabData.length; i++)
         controller.tabData[i].page
     ]);