Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在颤振选项卡ViewController中,平移和轻触手势不起作用_Flutter_Flutter Layout_Gesture_Tabview - Fatal编程技术网

Flutter 在颤振选项卡ViewController中,平移和轻触手势不起作用

Flutter 在颤振选项卡ViewController中,平移和轻触手势不起作用,flutter,flutter-layout,gesture,tabview,Flutter,Flutter Layout,Gesture,Tabview,我使用了一个放置在TabViewController中的手势检测器。其中,手势检测器的平移和点击事件不起作用,而TabViewController的拖动和点击事件起作用。如何使手势检测器的事件工作 我已经提到了这一点,但只有解决方案可以避免覆盖相应小部件的点击手势 import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget {

我使用了一个放置在TabViewController中的手势检测器。其中,手势检测器的平移和点击事件不起作用,而TabViewController的拖动和点击事件起作用。如何使手势检测器的事件工作

我已经提到了这一点,但只有解决方案可以避免覆盖相应小部件的点击手势

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: DefaultTabController(length: 3, child: MyHomePage()),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _value = 10;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        bottom: TabBar(
          tabs: [
            Tab(icon: Icon(Icons.directions_car)),
            Tab(icon: Icon(Icons.directions_transit)),
            Tab(icon: Icon(Icons.directions_bike)),
          ],
        ),
        title: Text('Tabs Demo'),
      ),
      body: TabBarView(
        children: <Widget>[
          SingleChildScrollView(
            child: Card(
              child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.stretch,
                children: <Widget>[
                  ConstrainedBox(
                      constraints: BoxConstraints.loose(Size(200, 200)),
                      child: AspectRatio(
                          aspectRatio: 1,
                          child: GestureDetector(
                            onPanStart: (DragStartDetails details) =>
                                {print('pan start')},
                            onPanUpdate: (DragUpdateDetails details) =>
                            {print('pan update')},
                            onPanEnd: (DragEndDetails details) =>
                            {print('pan end')},
                            onTapUp: (TapUpDetails details) =>
                            {print('tap up')},
                            child: Container(
                              color: Colors.green,
                            ),
                          ))),
                  Padding(
                    padding: EdgeInsets.all(10),
                    child: Container(
                      height: 200,
                      width: 200,
                      color: Colors.lightBlue,
                    ),
                  ),
                  Container(
                    height: 200,
                    child: Slider(
                        value: _value.toDouble(),
                        min: 1.0,
                        max: 10.0,
                        divisions: 10,
                        activeColor: Colors.red,
                        inactiveColor: Colors.black,
                        label: 'Set a value',
                        onChanged: (double newValue) {
                          setState(() {
                            _value = newValue.round();
                          });
                        }),
                  ),
                  Padding(
                    padding: EdgeInsets.all(10),
                    child: Container(
                      height: 200,
                      width: 200,
                      color: Colors.lightBlue,
                    ),
                  ),
                  Container(
                    height: 200,
                    child: Slider(
                        value: _value.toDouble(),
                        min: 1.0,
                        max: 10.0,
                        divisions: 10,
                        activeColor: Colors.red,
                        inactiveColor: Colors.black,
                        label: 'Set a value',
                        onChanged: (double newValue) {
                          setState(() {
                            _value = newValue.round();
                          });
                        }),
                  )
                ],
              ),
            ),
          ),
          Container(
            color: Colors.yellow,
          ),
          Container(
            color: Colors.red,
          )
        ],
      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
视觉密度:视觉密度。自适应平台密度,
),
主页:DefaultTabController(长度:3,子项:MyHomePage()),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
int _值=10;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
底部:选项卡栏(
选项卡:[
选项卡(图标:图标(图标方向车)),
选项卡(图标:图标(图标方向和交通)),
选项卡(图标:图标(图标方向)),
],
),
标题:文本(“选项卡演示”),
),
正文:选项卡视图(
儿童:[
SingleChildScrollView(
孩子:卡片(
子:列(
mainAxisSize:mainAxisSize.min,
crossAxisAlignment:crossAxisAlignment.stretch,
儿童:[
约束盒(
约束:BoxConstraints.loose(大小(200200)),
孩子:AspectRatio(
方面:1,
儿童:手势检测器(
onPanStart:(DragStartDetails)=>
{print('pan start')},
onPanUpdate:(DragUpdateDetails)=>
{print('pan update')},
onPanEnd:(DragEndDetails)=>
{print('pan end')},
onTapUp:(tappdetails细节)=>
{print('tap up')},
子:容器(
颜色:颜色。绿色,
),
))),
填充物(
填充:边缘设置。全部(10),
子:容器(
身高:200,
宽度:200,
颜色:颜色。浅蓝色,
),
),
容器(
身高:200,
子:滑块(
值:_value.toDouble(),
最低:1.0,
最高:10.0,
分部:10,
activeColor:Colors.red,
不活动颜色:颜色。黑色,
标签:“设置值”,
一旦更改:(双新值){
设置状态(){
_value=newValue.round();
});
}),
),
填充物(
填充:边缘设置。全部(10),
子:容器(
身高:200,
宽度:200,
颜色:颜色。浅蓝色,
),
),
容器(
身高:200,
子:滑块(
值:_value.toDouble(),
最低:1.0,
最高:10.0,
分部:10,
activeColor:Colors.red,
不活动颜色:颜色。黑色,
标签:“设置值”,
一旦更改:(双新值){
设置状态(){
_value=newValue.round();
});
}),
)
],
),
),
),
容器(
颜色:颜色,黄色,
),
容器(
颜色:颜色,红色,
)
],
),
);
}
}

是否希望
选项卡视图的滚动保持不变?您将在
平移开始
平移更新
平移结束
上执行什么操作?@Darshan:在TabBarView中添加TabBarView时,我们不需要TabBarView像滑块一样交互。我们将在GestureDetector下添加自定义画师,并使用“平移开始”、“平移更新”进行一些交互,如拖动。是否仍希望
TabBarView
的滚动保持不变?您将在
平移开始
平移更新
平移结束
上执行什么操作?@Darshan:在TabBarView中添加TabBarView时,我们不需要TabBarView像滑块一样交互。我们将在GestureDetector下添加自定义画师,并使用“平移开始”、“平移更新”进行一些交互,如拖动。