如何将RaisedButton
设置为已选中状态,就像在切换按钮已选中状态中一样?
如何使RaisedButton
不占用额外的宽度,即虾包裹标签文本。
最佳答案
我相信我无需使用RaisedButton
就可以做到同样的事情。
根据我的理解,您正在尝试在第一个问题中在两种情况之间切换RaisedButton
,可以通过在调用States
时在两个onPressed
之间交替来实现此目的。
但是,为了也回答您的第二个问题,我使用了Container
而不是RaisedButton
,该Container
现在充当了Button
,当点击它时,它会在状态之间切换。并且Container
将自己调整为它的child
,即我的示例中Text
的状态发生变化的String
(Color
和Container
值)。
最后,为了使RaisedButton
具有类似于GestureDetector
的新闻功能,我将其包装在onTap
中,并控制RaisedButton
调用中状态的变化。
这是我的完整代码:
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
home: new MyApp()));
}
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return new _MyAppState();
}
}
class _MyAppState extends State<MyApp> {
Color _myColor = Colors.green;
String _myAccountState = "Account Enabled";
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Manage Accounts"),
centerTitle: true,
),
body: new Center(
child: new GestureDetector(
child: new Container(
decoration: new BoxDecoration(color: Colors.grey),
child: new Text(
_myAccountState, style: new TextStyle(color: _myColor),),
),
onTap: () {
setState(() {
if (_myColor == Colors.green) {
_myAccountState = "Account Disabled";
_myColor = Colors.orange;
}
else {
_myAccountState = "Account Enabled";
_myColor = Colors.green;
}
});
},
)
),
);
}
}
PS:对于开/关行为,您绝对可以使用
Container
并产生类似的行为,如下所示:return new Scaffold(
appBar: new AppBar(
title: new Text("Manage Accounts"),
centerTitle: true,
),
body: new Center(
child: new Column(
children: <Widget>[
new Text(_myAccountState),
new RaisedButton(
child: new Text("Click Me"), color: _myColor, onPressed: () {
setState(() {
if (_myColor == Colors.green) {
_myAccountState = "Account Disabled";
_myColor = Colors.red;
}
else {
_myAccountState = "Account Enabled";
_myColor = Colors.green;
}
});
})
],
),
),
);
但是,我尝试将
GestureDetector
与RaisedButton
结合使用的唯一原因是回答您的第二个问题,我不确定如何将rinktWrap与ojit_code结合使用。