Je veux créer un bouton qui ressemble à l'image ci-dessus avec Flutter. Mais je n'ai aucune idée de comment y parvenir ... aidez-moi, s'il vous plaît!
3 Réponses :
Pour créer un Button
composé similaire, vous devez utiliser un widget stack
, vous pouvez voir que les deux boutons latéraux sont identiques, donc ce sont des boutons identiques dans une rangée avec un BorderRadius
. la conception du bouton du milieu peut être effectuée en découpant la bordure du bouton de la moitié de sa largeur
, puis en la plaçant au milieu de la ligne.
Merci pour le tuyau. Je l'ai fait et j'ai téléchargé le code ci-dessous.
Vous pouvez utiliser un IconButton
avec une image d'élément contenant un arrière-plan transparent.
IconButton( icon: Image.asset('assets/your/transperantBG/icon.png'), onPressed: (){}, )
créer une image qui ressemble à votre bouton et, créer l'enfant d'InkWell.
merci d'avoir donné une idée, je l'ai fait en quelque sorte! La morue est en dessous
Widget _startButton(BuildContext context) { return Container( margin: const EdgeInsets.only(top: 250.0), child: Stack( children: <Widget>[ Center( child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: <Widget>[ _buildSideButtons(context, Icons.settings, palette.limeYellow, const EdgeInsets.only(right: 30.0)), _buildSideButtons(context, Icons.lightbulb_outline, palette.limeGreen, const EdgeInsets.only(left: 30.0)), ], ), ), Center( child: Container( width: MediaQuery.of(context).size.width * 0.35, height: MediaQuery.of(context).size.height, child: DecoratedBox( decoration: BoxDecoration( shape: BoxShape.circle, gradient: LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [palette.limeYellow, palette.limeGreen])), ))), Center( child: Container( width: MediaQuery.of(context).size.width * 0.275, height: MediaQuery.of(context).size.height, child: new RaisedButton( elevation: 0.0, color: Colors.white, child: new Text( "START", style: TextStyle( fontFamily: "Bebas Neue", fontSize: 25.0, fontWeight: FontWeight.bold), ), onPressed: () => Navigator.push( context, MaterialPageRoute( builder: (BuildContext context) => CountDown())), shape: CircleBorder()))) ], ), ); } Widget _buildSideButtons( BuildContext context, IconData icon, Color coverColor, EdgeInsets pad, {VoidCallback navigate}) { return Container( height: MediaQuery.of(context).size.height * 0.07, child: RaisedButton( elevation: 5.0, onPressed: () {}, shape: RoundedRectangleBorder( borderRadius: BorderRadius.all(Radius.circular(50.0))), child: Container( child: Padding( padding: pad, child: Icon(icon, color: Colors.black), ), ), color: coverColor, textColor: Colors.white, ), ); } I used Stack and Raised Buttons and finally made it! Thank you for the advice. I simply need to add boxShadow to make it close to the example picture I uploaded above.
Qu'avez-vous essayé jusqu'à présent.
Je l'ai complété et téléchargé le code ci-dessous. :)