Je ne trouve aucun exemple qui montre comment créer un cercle IconButton
similaire au FloatingActionButton
. Quelqu'un peut-il suggérer comment/quel est le besoin de créer un bouton personnalisé comme le FloatingActionButton
?
le flutter vient avec un FloatingActionButton
Exemple:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'msc',
home: new Scaffold(
body: new Center(
child: new FloatingActionButton(
backgroundColor: Colors.redAccent,
onPressed: () => {},
),
)));
}
}
RawMaterialButton est mieux adapté, je pense.
new RawMaterialButton(
onPressed: () {},
child: new Icon(
Icons.pause,
color: Colors.blue,
size: 35.0,
),
shape: new CircleBorder(),
elevation: 2.0,
fillColor: Colors.white,
padding: const EdgeInsets.all(15.0),
),
Vous pouvez utiliser InkWell pour le faire:
Une zone rectangulaire d'un matériau qui répond au toucher.
L'exemple ci-dessous montre comment utiliser InkWell
. Remarque: vous n'avez pas besoin de StatefulWidget
pour le faire. Je l'ai utilisé pour changer l'état du compte.
Exemple:
import 'package:flutter/material.Dart';
class SettingPage extends StatefulWidget {
@override
_SettingPageState createState() => new _SettingPageState();
}
class _SettingPageState extends State<SettingPage> {
int _count = 0;
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Center(
child: new InkWell(// this is the one you are looking for..........
onTap: () => setState(() => _count++),
child: new Container(
//width: 50.0,
//height: 50.0,
padding: const EdgeInsets.all(20.0),//I used some padding without fixed width and height
decoration: new BoxDecoration(
shape: BoxShape.circle,// You can use like this way or like the below line
//borderRadius: new BorderRadius.circular(30.0),
color: Colors.green,
),
child: new Text(_count.toString(), style: new TextStyle(color: Colors.white, fontSize: 50.0)),// You can add a Icon instead of text also, like below.
//child: new Icon(Icons.arrow_forward, size: 50.0, color: Colors.black38)),
),//............
),
),
);
}
}
Si vous souhaitez bénéficier de splashColor
, highlightColor
, encapsulez le widget InkWell
à l'aide d'un widget Material
avec un cercle de type de matériau. Et puis supprimez decoration
dans le widget Container
.
Résultat:
Vous pouvez également utiliser un RaisedButton avec une image à l'intérieur (par exemple, pour une connexion sociale) comme ceci (sizebox avec fittebox est nécessaire pour contraster l'image sur la taille spécifiée):
FittedBox(
fit: BoxFit.scaleDown,
child: SizedBox(
height: 60,
width: 60,
child: RaisedButton(
child: Image.asset(
'assets/images/google_logo.png'),
shape: StadiumBorder(),
color: Colors.white,
onPressed: () {},
),
),
),