gpt4 book ai didi

dart - Flutter - 检测内容溢出并剪辑它

转载 作者:IT王子 更新时间:2023-10-29 06:45:27 25 4
gpt4 key购买 nike

我正在尝试使用 ClipRectColumn在里面,但似乎效果不佳。

我想实现的是剪辑列的内容并在溢出时显示文本消息(如果列的内容无法在可用空间内显示)。

您对我如何实现它有什么建议吗?

import 'package:flutter/material.dart';

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

class ContentOverflowDetectionApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Overflow detection"),
),
body: Stack(
fit: StackFit.expand,
children: [
ClipRect(
child: Column(
children: [
Container(
width: 300,
height: 400,
color: Colors.green[200],
child: Text('first widget'),
),
Container(
width: 350,
height: 350,
color: Colors.yellow[200],
child: Text('overflowed widget'),
),
],
),
),
Positioned(
child: Align(
alignment: FractionalOffset.bottomCenter,
child: Text("SHOW THIS TEXT ONLY IF CONTENT HAS OVERFLOWED."),
),
),
],
),
),
);
}
}

最佳答案

您不应该将 ClipRect 用于您的目标。请尝试将值为 Clip.antiAliasclipBehavior 参数添加到您的 Stack 小部件。

import 'package:flutter/material.dart';

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

class ContentOverflowDetectionApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Overflow detection"),
),
body: Stack(
fit: StackFit.expand,
clipBehavior: Clip.antiAlias,
children: [
Positioned(
top: 0,
child: Column(
children: [
Container(
width: 300,
height: 400,
color: Colors.green[200],
child: Text('first widget'),
),
Container(
width: 350,
height: 350,
color: Colors.yellow[200],
child: Text('overflowed widget'),
),
],
),
),
Positioned(
child: Align(
alignment: FractionalOffset.bottomCenter,
child: Text("SHOW THIS TEXT ONLY IF CONTENT HAS OVERFLOWED."),
),
),
],
),
),
);
}
}

此解决方案仅修复剪裁。

How to get height of a Widget?给出了如何检查小部件高度并添加带有溢出消息的文本的答案

关于dart - Flutter - 检测内容溢出并剪辑它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55091863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com