Flutter 按钮中的自定义图像
Custom image in a button in Flutter
我正在尝试创建一个按钮,它会在按下时执行某些操作,假设如果用户点击它(或点击并按住),它也会调用函数 _pressedButton(),图像会发生变化。
把它想象成一个按下自定义图片的按钮。
在后续中,我是否也可以根据一些外部因素来更改图像?
例如。如果某个函数 A returns 为真,则显示图像 1,否则显示图像 2
您可以在 Flutter interactivity tutorial 中了解有关按钮和状态的所有信息。
例如,这里有一个按钮,每次单击它时都会显示不同的猫。
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
home: new HomePage(),
));
}
class HomePage extends StatefulWidget {
HomePageState createState() => new HomePageState();
}
class HomePageState extends State<HomePage> {
String _url = getNewCatUrl();
static String getNewCatUrl() {
return 'http://thecatapi.com/api/images/get?format=src&type=jpg&size=small'
'#${new DateTime.now().millisecondsSinceEpoch}';
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Cat Button'),
),
body: new Center(
child: new FloatingActionButton(
onPressed: () {
setState(() {
_url = getNewCatUrl();
});
},
child: new ConstrainedBox(
constraints: new BoxConstraints.expand(),
child: new Image.network(_url, fit: BoxFit.cover, gaplessPlayback: true),
),
),
),
);
}
}
实现您想要的效果的一种简便方法是使用 GestureDetector()
GestureDetector(
onTap: () {
//desired action command
},
child: Container(
alignment: Alignment.center,
width: 100,
height: 100,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Image.asset('assets/icons/user.png'),
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(50),
color: Colors.teal,
),
),
),
结果:
GestureDetector() 基本上模仿了一个按钮。
我正在尝试创建一个按钮,它会在按下时执行某些操作,假设如果用户点击它(或点击并按住),它也会调用函数 _pressedButton(),图像会发生变化。
把它想象成一个按下自定义图片的按钮。
在后续中,我是否也可以根据一些外部因素来更改图像? 例如。如果某个函数 A returns 为真,则显示图像 1,否则显示图像 2
您可以在 Flutter interactivity tutorial 中了解有关按钮和状态的所有信息。
例如,这里有一个按钮,每次单击它时都会显示不同的猫。
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
home: new HomePage(),
));
}
class HomePage extends StatefulWidget {
HomePageState createState() => new HomePageState();
}
class HomePageState extends State<HomePage> {
String _url = getNewCatUrl();
static String getNewCatUrl() {
return 'http://thecatapi.com/api/images/get?format=src&type=jpg&size=small'
'#${new DateTime.now().millisecondsSinceEpoch}';
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Cat Button'),
),
body: new Center(
child: new FloatingActionButton(
onPressed: () {
setState(() {
_url = getNewCatUrl();
});
},
child: new ConstrainedBox(
constraints: new BoxConstraints.expand(),
child: new Image.network(_url, fit: BoxFit.cover, gaplessPlayback: true),
),
),
),
);
}
}
实现您想要的效果的一种简便方法是使用 GestureDetector()
GestureDetector(
onTap: () {
//desired action command
},
child: Container(
alignment: Alignment.center,
width: 100,
height: 100,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Image.asset('assets/icons/user.png'),
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(50),
color: Colors.teal,
),
),
),
结果:
GestureDetector() 基本上模仿了一个按钮。