我用 Flutter 开发了一个嵌入网页的游戏。在 iPad 上的 Safari 上,这些操作都不适用于手指触摸。他们只响应鼠标点击。它们确实会响应移动设备上 Chrome 上的手指触摸。
在第一个屏幕上,有一个简单的平面按钮,带有 onPressed 导航到下一个屏幕。该按钮在 Chrome、Firefox 甚至 Safari 上都可以正常工作,但对于这个,只能使用鼠标。如果我在 iPad 上的 Safari 上尝试游戏,onPressed 不能用手指触摸,也不能用铅笔。
我嵌入带有 onTap 的 InkWell 小部件中的徽标也是如此。
这是游戏页面:http: //www.maxetom.com/jeux_lecture/son_a1.php
这是按钮的代码:
import 'package:flutter/material.dart';
class OrangeButton extends StatelessWidget {
final String screenName;
final String text;
OrangeButton(this.text, this.screenName);
void callNextScreen(BuildContext context) {
Navigator.of(context).pushNamed(screenName);
}
@override
Widget build(BuildContext context) {
return ClipRRect(
borderRadius: BorderRadius.circular(15),
child: FlatButton(
color: Theme.of(context).accentColor,
textColor: Colors.white,
onPressed: () => callNextScreen(context),
child: Container(
alignment: Alignment.center,
width: 120,
height: 50,
child: Text(
text,
style: Theme.of(context).textTheme.bodyText1,
),
),
),
);
}
}
这是 InkWell + onTap 的代码:
import 'package:url_launcher/url_launcher.dart';
import 'package:flutter/material.dart';
class Logo extends StatelessWidget {
const Logo({
Key key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
color: Colors.transparent,
alignment: Alignment.centerRight,
padding: const EdgeInsets.symmetric(vertical: 2.0, horizontal: 5.0),
child: Material(
color: Theme.of(context).primaryColorDark,
child: InkWell(
child: Text(
'maxetom',
style: TextStyle(
fontFamily: 'Bradley',
fontWeight: FontWeight.bold,
fontSize: 20,
color: Colors.white,
letterSpacing: 1.5,
),
textAlign: TextAlign.right,
),
onTap: () async {
final url = 'http://www.maxetom.com/';
if (await canLaunch(url)) {
await launch(
url,
forceSafariVC: false,
);
}
},
),
),
);
}
}
我使用“Flutter build web”来构建 web 版本的发行版。
我可能错过了一些东西。有人有想法吗?
谢谢!