[英]Flutter icon widget in ConstrainedBox
class MyHome extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Container(
child: ConstrainedBox(
constraints: BoxConstraints(
maxHeight: 100,
maxWidth: 100,
),
child: Icon(
Icons.backup,
size: 200,
),
),
));
}
}
in the above code, if i replace icon widget with image or text they stay at ConstrainedBox boundaries, but icon get full size?在上面的代码中,如果我用图像或文本替换图标小部件,它们会停留在 ConstrainedBox 边界,但图标会变成全尺寸吗? why?
为什么?
You can copy paste run full code below您可以在下面复制粘贴运行完整代码
Because in Icon
's source code, it's actually use RichText
and TextOverflow.visible
因为在
Icon
的源代码中,它实际上是使用RichText
和TextOverflow.visible
source code link https://github.com/flutter/flutter/blob/8df56056b4914060784e68e6b149a30319b75d3d/packages/flutter/lib/src/widgets/icon.dart#L174源代码链接https://github.com/flutter/flutter/blob/8df56056b4914060784e68e6b149a30319b75d3d/packages/flutter/lib/src/widgets/icon.dart#L174
code snippet of souce code源代码的代码片段
Widget iconWidget = RichText(
overflow: TextOverflow.visible, // Never clip.
textDirection: textDirection, // Since we already fetched it for the assert...
text: TextSpan(
text: String.fromCharCode(icon!.codePoint),
style: TextStyle(
inherit: false,
color: iconColor,
fontSize: iconSize,
fontFamily: icon!.fontFamily,
package: icon!.fontPackage,
),
),
);
working demo use RichText
工作演示使用
RichText
full code use RichText
完整代码使用
RichText
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHome(),
);
}
}
class MyHome extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Container(
child: ConstrainedBox(
constraints: BoxConstraints(
maxHeight: 100,
maxWidth: 100,
),
child: RichText(
overflow: TextOverflow.visible, // Never clip.
//textDirection: textDirection, // Since we already fetched it for the assert...
text: TextSpan(
text: String.fromCharCode((Icons.backup).codePoint),
style: TextStyle(
inherit: false,
color: Colors.blue,
fontSize: 200,
fontFamily: (Icons.backup).fontFamily,
package: (Icons.backup).fontPackage,
),
),
)),
));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.