- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了此代码,但我想拥有4x4的翻转卡,您能告诉我该怎么做吗?请
下面的代码是否可以帮助我谢谢你。
我想重复GestureDetector 4 x 4。
在新的flip_card.dart文件中。
下面的代码是否可以帮助我谢谢你。
我想重复GestureDetector 4 x 4。
在新的flip_card.dart文件中。
如果您可以逐步向我解释,我是新手。谢谢。
import 'dart:math' as math;
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'dart:async';
void main() => runApp(MaterialApp(home: HomePage()));
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage>
with SingleTickerProviderStateMixin {
AnimationController _controller;
bool _flag = true;
Color _color = Colors.blue;
@override
void initState() {
super.initState();
_controller = AnimationController(
vsync: this, duration: Duration(milliseconds: 200), value: 1);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: GestureDetector(
onTap: flip,
child: AnimatedBuilder(
animation: _controller,
builder: (context, child) {
return Transform(
transform:
Matrix4.rotationY((1 - _controller.value) * math.pi / 2),
alignment: Alignment.center,
child: Container(
height: 70,
width: 70,
margin: EdgeInsets.symmetric(horizontal: 20),
padding: EdgeInsets.symmetric(vertical: 12),
alignment: Alignment.center,
decoration: BoxDecoration(
color: _color.withOpacity(0.2),
border: Border.all(color: Colors.grey)),
child: _flag
? Text(
'Carte A',
textScaleFactor: 1,
textAlign: TextAlign.center,
)
: Image.asset('assets/gold.png'),
),
);
},
),
),
),
);
}
void flip() async {
if (!_flag) {
return;
}
if (_flag) {
await _controller.reverse();
setState(() {
_color = Colors.orange;
});
await _controller.forward();
} else {
await _controller.reverse();
setState(() {
_color = Colors.blue;
});
await _controller.forward();
}
setState(() {
_flag = !_flag;
});
Timer timer = new Timer(new Duration(seconds: 2), () async {
if (_flag) {
await _controller.reverse();
setState(() {
_color = Colors.orange;
});
await _controller.forward();
} else {
await _controller.reverse();
setState(() {
_color = Colors.blue;
});
await _controller.forward();
}
setState(() {
_flag = !_flag;
});
});
}
}
最佳答案
您可以使用flip_card package:
1. 将依赖项添加到pubspec
依赖项中:
flip_card: ^0.4.4
2. 导入软件包:
import 'package:flip_card/flip_card.dart';
3. 创建一个
GridView
,
crossAxisCount
为4。这是每行中的纸牌数量。
List.generate(16, ...
您可以制作16张卡片(进行4 * 4布局)。
FlipCard
都有一个
front
和一个
back
。
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: GridView.count(
childAspectRatio: 1.5,
crossAxisCount: 4,
mainAxisSpacing: 10,
children: List.generate(16, (index) {
return FlipCard(
front: Container(
height: 70,
width: 70,
margin: EdgeInsets.symmetric(horizontal: 20),
padding: EdgeInsets.symmetric(vertical: 12),
alignment: Alignment.center,
decoration: BoxDecoration(
color: _color.withOpacity(0.2),
border: Border.all(color: Colors.grey)),
child: Text(
'Carte A',
textScaleFactor: 1,
textAlign: TextAlign.center,
)),
back: Container(
height: 70,
width: 70,
margin: EdgeInsets.symmetric(horizontal: 20),
padding: EdgeInsets.symmetric(vertical: 12),
alignment: Alignment.center,
decoration: BoxDecoration(
color: _color.withOpacity(0.2),
border: Border.all(color: Colors.grey)),
child: Image.asset('assets/gold.png'),
),
);
}))),
);
}
结果:
List<GlobalKey<FlipCardState>> keys = [];
@override
void initState() {
super.initState();
for (int i = 0; i < 16; i++) {
GlobalKey<FlipCardState> cardKey = new GlobalKey<FlipCardState>();
keys.add(cardKey);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: GridView.count(
childAspectRatio: 1.5,
crossAxisCount: 4,
mainAxisSpacing: 10,
children: List.generate(16, (index) {
return FlipCard(
key: keys[index],
onFlip: () async {
await new Future.delayed(const Duration(seconds : 2)) .then((value) => {
if (!keys[index].currentState.isFront)
keys[index].currentState.toggleCard()
});
},
front: Container(
height: 70,
width: 70,
margin: EdgeInsets.symmetric(horizontal: 20),
padding: EdgeInsets.symmetric(vertical: 12),
alignment: Alignment.center,
decoration: BoxDecoration(
color: _color.withOpacity(0.2),
border: Border.all(color: Colors.grey)),
child: Text(
'Carte A',
textScaleFactor: 1,
textAlign: TextAlign.center,
)),
back: Container(
height: 70,
width: 70,
margin: EdgeInsets.symmetric(horizontal: 20),
padding: EdgeInsets.symmetric(vertical: 12),
alignment: Alignment.center,
decoration: BoxDecoration(
color: _color.withOpacity(0.2),
border: Border.all(color: Colors.grey)),
child: Image.asset('assets/images/person.png'),
),
);
}))),
);
}
关于flutter - 重复多次子:GestureDetector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63314863/
有没有办法让 GestureDetector 覆盖所有子 GestureDetectors 的功能? 我有一个复杂的小部件,我希望能够轻松地在较高级别覆盖它的所有行为。例如,将免费用户锁定在功能之外。
如果我有一个具有内部 GestureDetector 的 GestureDetector,我该如何设置它以便两个检测器都接收到点击事件? 你可以在这里看到运行代码: https://dartpad.d
如果 GestureDetector.SimpleOnGestureListener 与 GestureDetector.OnGestureListener 执行相同的操作,但不需要未使用的代码,那么
我正在编写简单的代码来检测所有手势,如滑动、滚动等,并打算实现接口(interface) GestureDetector.OnGestureListener用于覆盖它的方法,但我知道同样可以用 Ges
我已经用不同的子 Activity 实现了我的 TabActivity: intent = new Intent().setClass(this, MyChildTabActiviy.class);
我创建了此代码,但我想拥有4x4的翻转卡,您能告诉我该怎么做吗?请 下面的代码是否可以帮助我谢谢你。 我想重复GestureDetector 4 x 4。 在新的flip_card.dart文件中。
我创建了标准手势检测器,它根据给定的手势更改 TextView 。当我的 XML 仅包含我希望更改的相对布局和 TextView 时,一切正常。然而,当我添加网格布局和一些图标时,手势检测器不再工作,
出于某种原因,我的手势检测器无法正常工作。我已经查看了其他多个答案,说要在 down 上实现。我有,但它仍然不起作用。有人可以帮忙吗?这是我无法正常工作的代码。如您所见,我执行了 onDown pub
我正在学习使用 GestureDetector 并遵循 android 的官方开发人员指南,但是当我尝试运行一段代码时遇到了问题.. public class MainActivity extends
我必须在我的程序中使用 GestureDetectors。一个工作精美,另一个则不然。据我所知,它们的实现方式相同。 这是实现不起作用的代码: myExcuseGestureDetector = ne
我正在尝试使用 GestureDetector 使文本小部件可缩放,但它根本不起作用,我什至没有收到任何错误... 请注意,我尝试了很多事情,比如用 GestureDetector 包裹脚手架本身..
当我在 GestureDetector 中有一个 ListView 并且我覆盖了 onVerticalDragUpdate 方法时,ListView 无法滚动. 我如何重写 onVerticalDra
我正在尝试在我的 zoomable_images plugin 中实现双击缩放功能但是GestureTapCallback不提供点击位置信息。 理想情况下,偏移量将由回调返回。有其他 API 吗? 最
我有这个代码 itemizedOverlay = new MyItemizedOverlay(drawable,this); itemizedOverlay.setGestureDetector(ne
我正在使用 GestureDetector 并没有找到任何告诉您拖动方向的 onXYZ 事件。 最佳答案 你试过 onPanUpdate(details) 方法了吗?这是你可以做到的。 Gesture
我有两个容器在一个堆栈中,两个容器都有 GestureDetector。第一个容器的 OnTap 工作正常,但它不适用于另一个容器。第一个容器是图像,第二个容器是部分对齐在第一个容器上方的绿色背景。
我制作了一个简单的测试用例应用程序,您可以在其中使用 GestureDetector 单击一个小部件,该小部件使用 setState 触发对 tapCount 变量的更新。 应用程序在模拟器中运行,文
在我的 build ,我有这个函数,基本上堆叠一个button和一个 counter ,我还传递了一个函数(这让我对所有按钮重用 buildbuttoncolumn,而不是复制周围的代码 我的构建:
当用户在外面轻敲但我无法让它工作时,试图用 GestureDetector 使 TextFormField 失去焦点。 onTap 从不触发。 class EditScreen extends Sta
我正在尝试使 GestureDetector 在堆栈中工作,堆栈顶部有一个容器,但从未调用 onTap 回调。 如您所见,即使使用 HitTestBehavior.translucent 也不起作用
我是一名优秀的程序员,十分优秀!