Flutter 颤振姿态检测器isn';他根本不工作
我试图使一个文本小部件缩放与GestureDetector,但它根本不工作,我没有得到任何错误,甚至 注意,我尝试了很多方法,比如用手势检测器包裹脚手架本身 main.dartFlutter 颤振姿态检测器isn';他根本不工作,flutter,Flutter,我试图使一个文本小部件缩放与GestureDetector,但它根本不工作,我没有得到任何错误,甚至 注意,我尝试了很多方法,比如用手势检测器包裹脚手架本身 main.dart import 'package:flutter/material.dart'; import 'package:testy/zoomable.dart'; void main() => runApp( MaterialApp( debugShowCheckedModeBanner: false,
import 'package:flutter/material.dart';
import 'package:testy/zoomable.dart';
void main() => runApp(
MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Testy',
theme: ThemeData(
primarySwatch: Colors.green,
primaryColor: Colors.green
),
home: Zoomable(),
)
);
import 'package:flutter/material.dart';
class Zoomable extends StatefulWidget {
@override
_ZoomableState createState() => _ZoomableState();
}
class _ZoomableState extends State<Zoomable> {
@override
Widget build(BuildContext context) {
double size = 70;
return Scaffold(
appBar: AppBar(
title: Text('Zoomable'),
),
body: GestureDetector(
onScaleStart: (details) {},
onScaleUpdate: (ScaleUpdateDetails details) {
if (size < 150.0 && size > 50.0) {
setState(() {
size = size + details.scale;
});
}
},
onTap: () {
if (size < 150.0 && size > 50.0) {
setState(() {
size = size + 1;
});
}
},
child: Text(
'Zoomable',
style: TextStyle(fontSize: size),
),
),
);
}
}
可缩放。省道
import 'package:flutter/material.dart';
import 'package:testy/zoomable.dart';
void main() => runApp(
MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Testy',
theme: ThemeData(
primarySwatch: Colors.green,
primaryColor: Colors.green
),
home: Zoomable(),
)
);
import 'package:flutter/material.dart';
class Zoomable extends StatefulWidget {
@override
_ZoomableState createState() => _ZoomableState();
}
class _ZoomableState extends State<Zoomable> {
@override
Widget build(BuildContext context) {
double size = 70;
return Scaffold(
appBar: AppBar(
title: Text('Zoomable'),
),
body: GestureDetector(
onScaleStart: (details) {},
onScaleUpdate: (ScaleUpdateDetails details) {
if (size < 150.0 && size > 50.0) {
setState(() {
size = size + details.scale;
});
}
},
onTap: () {
if (size < 150.0 && size > 50.0) {
setState(() {
size = size + 1;
});
}
},
child: Text(
'Zoomable',
style: TextStyle(fontSize: size),
),
),
);
}
}
导入“包装:颤振/材料.省道”;
类可缩放扩展StatefulWidget{
@凌驾
_ZoomableState createState();
}
类_ZoomableState扩展状态{
@凌驾
小部件构建(构建上下文){
双倍尺寸=70;
返回脚手架(
appBar:appBar(
标题:文本(“可缩放”),
),
正文:手势检测器(
onScaleStart:(详细信息){},
onScaleUpdate:(缩放更新详细信息){
如果(尺寸<150.0&&size>50.0){
设置状态(){
尺寸=尺寸+细节。比例;
});
}
},
onTap:(){
如果(尺寸<150.0&&size>50.0){
设置状态(){
尺寸=尺寸+1;
});
}
},
子:文本(
“可缩放”,
样式:文本样式(fontSize:size),
),
),
);
}
}
这是因为您正在呼叫双倍大小=70代码>在build()函数中。调用setState()
时,将调用build()
函数,并将大小设置回70。只需将size
移动到build()
函数的外部,它就会工作