flutter 选中按钮自定义
2022-01-10 本文已影响0人
大宝来巡山
import 'dart:ffi';
import 'package:flutter/material.dart';
class setting extends StatefulWidget {
@override
_settingStatecreateState() =>_settingState();
}
class_settingStateextendsState {
@override
Widget build(BuildContext context) {
return Scaffold(
body:Container(
width:double.infinity,
child:Column(
mainAxisAlignment:MainAxisAlignment.center,
crossAxisAlignment:CrossAxisAlignment.center,
children: [
customButton(
'状态按钮',
normalColor:Colors.white,
normalTextColor:Colors.black,
selectedColor:Colors.red,
borderWidth:1,
normalBorderColor:Colors.grey,
selectedBorderColor:Colors.blue,
selected:false,
touchDown: (boolselected) {
if(selected) {
returnfalse;
}else{
returntrue;
}
},
)
]),
));
}
}
classcustomButtonextendsStatefulWidget{
boolselected =false;
doubleborderWidth;
ColornormalColor =Colors.white;
StringnormalText ='';
ColornormalTextColor =Colors.black;
ColornormalBorderColor =Colors.black;
ColorselectedColor;
StringselectedText ='';
ColorselectedTextColor;
ColorselectedBorderColor;
FunctiontouchDown;
customButton(this.normalText,
{this.normalColor,
this.normalTextColor,
this.normalBorderColor,
this.selectedColor,
this.selectedText,
this.selectedTextColor,
this.selectedBorderColor,
this.selected ,
this.touchDown,
this.borderWidth =0}) {
if(this.selectedColor ==null) {
this.selectedColor =this.normalColor;
}
if(this.selectedText ==null) {
this.selectedText =this.normalText;
}
if(this.selectedTextColor ==null) {
this.selectedTextColor =this.normalTextColor;
}
if(this.selectedBorderColor ==null) {
this.selectedBorderColor =this.normalBorderColor;
}
}
@override
_customButtonStatecreateState() =>_customButtonState(this.normalText,
normalColor:this.normalColor,
normalTextColor:this.normalTextColor,
normalBorderColor:this.normalBorderColor,
selectedColor:this.selectedColor,
selectedText:this.selectedText,
selectedTextColor:this.selectedTextColor,
selected:this.selected,
selectedBorderColor:this.selectedBorderColor,
touchDown:this.touchDown,
borderWidth:this.borderWidth);
}
class_customButtonStateextendsState {
boolselected;
ColornormalColor;
StringnormalText;
ColornormalTextColor;
ColornormalBorderColor;
ColorselectedColor;
StringselectedText;
ColorselectedTextColor;
ColorselectedBorderColor;
doubleborderWidth;
FunctiontouchDown;
_customButtonState(this.normalText,
{this.normalColor,
this.normalTextColor,
this.normalBorderColor,
this.selectedColor,
this.selectedText,
this.selectedTextColor,
this.selectedBorderColor,
this.selected,
this.touchDown,
this.borderWidth}) {}
@override
Widget build(BuildContext context) {
return RaisedButton(
autofocus:true,
color:this.selected ?this.selectedColor :this.normalColor,
shape:RoundedRectangleBorder(
borderRadius:BorderRadius.all(Radius.circular(1)),
side:BorderSide(
color:this.selected
?this.selectedBorderColor
:this.normalBorderColor,
width:this.borderWidth,
style:BorderStyle.solid)),
onPressed: () {
boolvalue =this.touchDown(this.selected);
if(value !=this.selected) {
setState(() {
this.selected = value;
});
}
},
child:Container(
child:Row(
mainAxisSize:MainAxisSize.min,
mainAxisAlignment:MainAxisAlignment.center,
crossAxisAlignment:CrossAxisAlignment.center,
children: [
Text(
this.selected ?this.selectedText :this.normalText,
style:TextStyle(
color:this.selected
?this.selectedTextColor
:this.normalTextColor),
),
SizedBox(width:30),
Text(
this.selected ?this.selectedText :this.normalText,
style:TextStyle(
color:this.selected
?this.selectedTextColor
:this.normalTextColor),
),
]
),
),
);
}
}