IconButtonの列をすべて隣り合わせにしたいのですが、実際のアイコンとIconButtonの制限の間にはかなり大きなパディングがあるようです。既にボタンのパディングを0に設定しています。
これは私のコンポーネントで、非常に簡単です。
class ActionButtons extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
color: Colors.lightBlue,
margin: const EdgeInsets.all(0.0),
padding: const EdgeInsets.all(0.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
IconButton(
icon: new Icon(ScanrIcons.reg),
alignment: Alignment.center,
padding: new EdgeInsets.all(0.0),
onPressed: () {},
),
IconButton(
icon: new Icon(Icons.volume_up),
alignment: Alignment.center,
padding: new EdgeInsets.all(0.0),
onPressed: () {},
)
],
),
);
}
}
私はほとんどの水色のスペースを取り除き、アイコンを左から早く、互いに近づけるようにしたいのですが、IconButton自体のサイズを変更する方法が見つかりません。
このスペースはボタン自体によって占められていると確信しています。'centerRight
およびcenterLeft
に配置を変更すると、次のようになります。
実際のアイコンを小さくしても効果はありません。ボタンはまだ大きいです:
助けてくれてありがとう
余白はそれほど多くありません。 IconButtonは、タップ可能なオブジェクトが必要であるという仕様に従うマテリアルデザインウィジェットです。 各側で少なくとも48px。 IDEからIconButton実装をクリックすることができます。
また、ファイル全体が他のウィジェットを構成するだけで、ほとんどがコメントである200行しかないため、icon_button.Dartのソースコードを半自明に取得して、Material Design仕様に従わない独自のIconButtonを作成することもできます。
この問題を回避する2つの方法。
幅のあるコンテナ内にIconButtonをラップします。
例えば:
Container(
padding: const EdgeInsets.all(0.0),
width: 30.0, // you can adjust the width as you need
child: IconButton(
),
),
Shyju Madathilが推奨するIconButtonの代わりにGestureDetectorを使用することもできます。
GestureDetector( onTap: () {}, child: Icon(Icons.volume_up) )
ユーザーが画面に触れた場所にアイコンをレンダリングしようとしても、同様の問題に直面していました。残念ながら、Icon
クラスは、選択したアイコンをSizedBox
でラップします。
Iconクラスのソースを少し読むと、各アイコンをテキストとして扱うことができることがわかります。
Widget iconWidget = RichText(
overflow: TextOverflow.visible,
textDirection: textDirection,
text: TextSpan(
text: String.fromCharCode(icon.codePoint),
style: TextStyle(
inherit: false,
color: iconColor,
fontSize: iconSize,
fontFamily: icon.fontFamily,
package: icon.fontPackage,
),
),
);
したがって、たとえば、Icons.details
私のユーザーが何の余白もなく、ちょうど指し示した場所を示すために、私はこのような何かをすることができます:
Widget _pointer = Text(
String.fromCharCode(Icons.details.codePoint),
style: TextStyle(
fontFamily: Icons.details.fontFamily,
package: Icons.details.fontPackage,
fontSize: 24.0,
color: Colors.black
),
);
Dart/Flutterのソースコードは非常に親しみやすいため、少し掘り下げることを強くお勧めします。