Rad*_*tha 6 gridview dart flutter
我创建了一个颤动的应用程序,并使用图像选择器将图像作为gridView获取到中心,并使用网格图块循环图像阵列.是否可以在点击时触发gridTile?下面是main.dart中的代码,用于获取将图像添加到数组和网格视图的图像.
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
File _imageFile;
List<File> _imageList=[];
getImage() async {
var _fileName = await ImagePicker.pickImage();
setState(() {
_imageFile = _fileName;
_imageList.add(_imageFile);
});
}
removeImage(int index){
setState((){
_imageList.removeAt(index);
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Center(
child:_imageList.length == 0
? new Text('No image selected.')
:new GridView.count(
crossAxisCount: 4,
childAspectRatio: 1.0,
padding: const EdgeInsets.all(4.0),
mainAxisSpacing: 4.0,
crossAxisSpacing: 4.0,
children: _imageList.map((File file) {
return new GridTile(
child: new Image.file(file, fit: BoxFit.cover,));
}).toList()),
),
floatingActionButton: new FloatingActionButton(
onPressed:getImage,
tooltip: 'Pick Image',
child: new Icon(Icons.add_a_photo),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
Hem*_*Raj 14
您可以将GridTilein 包装在一个InkResponse或GestureDetector传递一个函数,以便在单击时调用
例:
// Function to be called on click
void _onTileClicked(int index){
debugPrint("You tapped on item $index");
}
// Get grid tiles
List<Widget> _getTiles(List<File> iconList) {
final List<Widget> tiles = <Widget>[];
for (int i = 0; i < iconList.length; i++) {
tiles.add(new GridTile(
child: new InkResponse(
enableFeedback: true,
child: new Image.file(iconList[i], fit: BoxFit.cover,),
onTap: () => _onTileClicked(i),
)));
}
return tiles;
}
// GridView
new GridView.count(
crossAxisCount: 4,
childAspectRatio: 1.0,
padding: const EdgeInsets.all(4.0),
mainAxisSpacing: 4.0,
crossAxisSpacing: 4.0,
children: _getTiles(_imageList),
)
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
您还可以使用网格构建器
child: new GridView.builder(
itemCount: 20,
gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2),
itemBuilder: (BuildContext context, int index) {
return new Card(
child: new InkResponse(
child: Image.asset('assets/whats-best-for-your-app-objective-cswift.jpg'),
onTap: (){
print(index);
},
),
);
}),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7069 次 |
| 最近记录: |