You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何为含单/多位数文本的Container设置统一尺寸?

解决Flutter圆形按钮统一尺寸问题

你的问题源于Container会根据内部文本长度自适应大小,导致单数字和多数字的圆形按钮尺寸不一致。只需给Container设置固定宽高,并让文本居中,就能实现所有按钮尺寸统一。

修改后的圆形按钮组件代码

Widget cirbtn(String btntext) {
  return GestureDetector(
    onTap: () {},
    child: Container(
      margin: const EdgeInsets.all(10),
      padding: const EdgeInsets.all(5),
      // 设置固定宽高,保证圆形大小一致
      width: 50,
      height: 50,
      decoration: const BoxDecoration(
        shape: BoxShape.circle,
        color: Colors.cyan,
      ),
      child: Text(
        btntext,
        style: const TextStyle(
          fontSize: 20,
        ),
        // 让文本在容器中居中显示
        textAlign: TextAlign.center,
      ),
    ),
  );
}

完整修改后的代码

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHome(),
    );
  }
}

class MyHome extends StatefulWidget {
  const MyHome({Key? key}) : super(key: key);

  @override
  State<MyHome> createState() => _MyHomeState();
}

class _MyHomeState extends State<MyHome> {
  Widget cirbtn(String btntext) {
    return GestureDetector(
      onTap: () {},
      child: Container(
        margin: const EdgeInsets.all(10),
        padding: const EdgeInsets.all(5),
        width: 50,
        height: 50,
        decoration: const BoxDecoration(
          shape: BoxShape.circle,
          color: Colors.cyan,
        ),
        child: Text(
          btntext,
          style: const TextStyle(
            fontSize: 20,
          ),
          textAlign: TextAlign.center,
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Center(
          child: Text("NAVEEN'S PROJECT"),
        ),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.start,
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Row(
            mainAxisAlignment: MainAxisAlignment.start,
            mainAxisSize: MainAxisSize.min,
            children: [
              cirbtn("1"),
              cirbtn("2"),
              cirbtn("3"),
              cirbtn("4"),
              cirbtn("5"),
              cirbtn("6"),
              cirbtn("7"),
            ],
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.start,
            mainAxisSize: MainAxisSize.min,
            children: [
              cirbtn("8"),
              cirbtn("9"),
              cirbtn("10"),
              cirbtn("11"),
              cirbtn("12"),
              cirbtn("13"),
              cirbtn("14"),
            ],
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.start,
            mainAxisSize: MainAxisSize.min,
            children: [
              cirbtn("15"),
              cirbtn("16"),
              cirbtn("17"),
              cirbtn("18"),
              cirbtn("19"),
              cirbtn("20"),
              cirbtn("21"),
            ],
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.start,
            mainAxisSize: MainAxisSize.min,
            children: [
              cirbtn("22"),
              cirbtn("23"),
              cirbtn("24"),
              cirbtn("25"),
              cirbtn("26"),
              cirbtn("27"),
              cirbtn("28"),
            ],
          ),
          Row(
            children: [
              cirbtn("29"),
              cirbtn("30"),
              cirbtn("31"),
            ],
          ),
        ],
      ),
    );
  }
}

你可以根据实际需求调整width和height的数值,确保所有圆形按钮大小一致,同时文本能在按钮内正常显示。

内容的提问来源于stack exchange,提问作者naveen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:37:03