- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在适用于 Android 和 iOS 的 Flutter 行元素上实现长按选择。有什么帮助吗?
到目前为止我的代码:
class ListElement extends StatelessWidget {
ListElement({this.text, this.name, this.mId, this.animationController});
final String text;
final String name;
final String mId;
final AnimationController animationController;
@override
Widget build(BuildContext context) {
return new GestureDetector(
onTap: () {
Navigator.of(context).push(
new MaterialPageRoute(builder: (BuildContext context) => new DrugProfile(drugmId))
);
},
onLongPress: () {
//HERE I NEED TO SELECT MULTIPLE ROWS IF IT FIRES
},
child: new SizeTransition(
sizeFactor: new CurvedAnimation(
parent: animationController, curve: Curves.easeOut),
axisAlignment: 0.0,
child: new Container(
margin: const EdgeInsets.symmetric(vertical: 10.0),
child: new Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
new Container(
margin: const EdgeInsets.only(right: 16.0),
child: new CircleAvatar(child: new Text(name[0].toUpperCase())),
),
new Expanded(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
new Text(name, style: Theme.of(context).textTheme.subhead),
new Container(
margin: const EdgeInsets.only(top: 5.0),
child: new Text(
text,
textAlign: TextAlign.left,
style: new TextStyle(
fontSize: 13.0,),
),
),
],
),
),
],
),
)
)
);
}
}
也许我从 onLongPress 事件开始就错了,但我需要执行以下操作:如果在行元素上长按,则提供选择多行的能力。然后在选择之后对行执行自定义操作(这不是问题的一部分:))在选择之后,我想象了一个索引数组,我可以将它们传递给函数以进行进一步处理。我只需要有关元素的多项选择的帮助。
最佳答案
您可以使用 HashMap 来跟踪列表中的选定项并根据您喜欢的手势更新其值。
这是您可以尝试的示例。在此示例中,多选模式将在长按某个项目时启动。当没有剩余的选择项时,多选模式将停止。
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
var selectMode = false;
Map<String, bool> listItemSelected = {
'List 1': false,
'List 2': false,
'List 3': false,
'List 4': false,
'List 5': false,
'List 6': false,
'List 7': false,
'List 8': false,
'List 9': false,
};
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: ListView(
children: listItemSelected.keys.map((key) {
return Card(
child: GestureDetector(
onTap: () {
// if multi-select mode is true, tap should select List item
if (selectMode && listItemSelected.containsValue(true)) {
debugPrint('onTap on $key');
setState(() {
listItemSelected[key] = !listItemSelected[key];
});
} else {
// Stop multi-select mode when there's no more selected List item
debugPrint('selectMode STOP');
selectMode = false;
}
},
// Start List multi-select mode on long press
onLongPress: () {
debugPrint('onLongPress on $key');
if (!selectMode) {
debugPrint('selectMode START');
selectMode = true;
}
setState(() {
listItemSelected[key] = !listItemSelected[key];
});
},
child: Container(
// Change List item color if selected
color: (listItemSelected[key])
? Colors.lightBlueAccent
: Colors.white,
padding: EdgeInsets.all(16.0),
child: Text(key),
),
),
);
}).toList(),
),
),
);
}
}
演示
关于android - 用于选择行和/或元素的 Flutter longPress 事件功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50156231/
这段代码一直有效,直到我将我的项目从 ios4 转换为 ios6 (+ARC) 并将我的 xib 文件换成 Storyboard。现在我所做的任何点击都算作长按。 手势设置 - (void)viewD
我在我的集合 View 中使用 UILongPressGestureRecognizer,我希望长按手势识别器只有在满足特定条件时才能工作。 NSString *check; if([check
我将更改fabric.js中长按的延迟(使用eventjs构建),但它没有改变。我做错了什么? canvas.on('touch:longpress', longPress, { de
我的表格 View 单元的 UI 遇到奇怪的交互缺陷。我实现了长按手势: func handleLongPress(sender:UILongPressGestureRecognizer!) {
我已经尝试了一段时间来完成这项工作。这种方法似乎在互联网上的几个地方都有效,但不适合我。请注意,当我在手机上尝试时,这在 Dreamweaver(和 chrome)中有效,但在 Eclipse Ind
在我的 GestureDetector 中调用 LongPress 后,如何监听移动事件? 当用户 LongClick 时,他开始选择模式,并且可以将一个正方形拖到屏幕中。但是我注意到在消费了 Lon
当 customView 执行 longPress 时,我想在 customView 上启用 UIPanGestureRecognizer。 (我希望当你longPresscustomView时,cu
我正在尝试使 imageView 在长按时增加尺寸,并在我取消按下后恢复正常。 public class MainActivity extends Activity { private class E
嘿伙计们,我试图让一个 View 出现在父 View 中的长按上,并使其可拖动和可收缩,但就像现在一样,我只能使它成为可拖动的,但收缩不起作用。这是我的代码 class MainVC: UIViewC
我有一个 ListFragment Activity 。 我想为 onItemClickedLongPress 创建一个方法,以便当用户执行此操作时。弹出一个菜单。我熟悉创建菜单。 因此,如果有人愿意
我有一个 UITableView,我正在向它的 UITableViewCell 添加一个 UILongPressGestureRecognizer,如下所示: // Setup Event-Handl
目前我正在开发一个电子邮件应用程序,并希望通过我的应用程序打开所有带有 mailto 方案的链接,而不是默认的 Apple 邮件应用程序。 例如,我有一个这样的链接 mailto_test 在 UIW
我正在开发一个简单的 android 应用程序,我的要求是, “在屏幕上发生一些移动事件(MotionEvent.ACTION_MOVE 为真)后,如果用户在某处停止移动几秒钟而没有将手指从屏幕上移开
这似乎是一个有点奇怪的问题。我在迭代 tableViewCell 中有一个 UIButton在 tableView那是放在常规的ViewController .出于某种原因,它在长按时看起来只是被点击
我需要在适用于 Android 和 iOS 的 Flutter 行元素上实现长按选择。有什么帮助吗? 到目前为止我的代码: class ListElement extends StatelessWid
https://drive.google.com/file/d/0B0alJDsAgypmSElpZUZ1U05zcGM/view?usp=sharing我想要这样的东西,我检查了弧形菜单,但是我们点
我希望用户能够长按 volumeUp 硬件按钮以跳过歌曲,并在短按时执行常规的 volumeUp 操作。 我能够区分两者(我发现 this solution,使用 onKeyDown、onKeyLon
我尝试使用长按手势和配置为连续更新的步进器来设置 View 。长按时,不会出现步进器的连续特征。目前,我已禁用长按。我想我不需要它。但为了将来引用,我将如何允许两者共存? 需要明确的是,这是我尝试此操
All Boxes 是 UITextField。我想在用户长按 UITextField 时更改背景颜色。 长按哪个TextField UITextField颜色变了,不是所有的UITextField
在没有释放屏幕(使用手势检测器)的情况下调用 Longpress 后应该如何调用滚动事件? 这是我的类(class): public class TestingGestureDetector exte
我是一名优秀的程序员,十分优秀!