803*_* DX 1 dart flutter flutter-layout
我想构建一个包含两个Text小部件和一个Divider垂直堆叠的小部件的小部件。它们的Divider宽度应与两个小部件中较宽的一个相同Text。整个组合的小部件不应消耗比其可见元素更多的布局空间;也就是说,它应该被收缩包装。
我希望它看起来像下图所示:
(我在这里添加浅灰色背景只是为了使我想要的边界框更加明显。)
我不清楚如何同时强制小部件层次结构采用文本的自然最大宽度,同时使宽度Divider拉伸到仅与文本的宽度一样大。如果可能的话,我想在不编写任何自定义布局小部件的情况下执行此操作,并且不直接为Divider第一个布局或渲染通道之后的小部件的使用测量值分配宽度。
这是我在 DartPad ( https://dartpad.dev/flutter ) 中尝试的一些代码,但是,自然地,它没有达到预期的效果:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
Text("Lorem ipsum"),
Text("dolor"),
Divider(thickness: 1.0, color: Colors.red),
]),
)));
}
}
Run Code Online (Sandbox Code Playgroud)
我的最终目标是拥有可在 Android Studio 3.5.3、Windows 10 64 位中运行的代码。如何修复(或替换)我的代码来实现此目的?
使用 IntrinsicWidth 请参阅https://medium.com/flutter-community/flutter-layout-cheat-sheet-5363348d037e了解详细选项
https://dartpad.dev/79edda902aa584124dafd56c35d612fd
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body:
Center(child: IntrinsicWidth(
child:Column(mainAxisSize: MainAxisSize.min , children: <Widget>[
Text("Lorem ipsum"),
Text("dolor"),
Divider(thickness: 1.0, color: Colors.red),
]))),
));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
752 次 |
| 最近记录: |