/// truncate the [String] without cutting words. The length is calculated with the suffix.
extension Truncate on String {
String truncate({required int max, String suffix = ''}) {
return length < max
? this
: '${substring(0, substring(0, max - suffix.length).lastIndexOf(" "))}$suffix';
}
}
如何使用的示例
print('hello world two times!'.truncate(max: 15, suffix: '...'));
class TruncatedText extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Container(
//Here you can control the width of your container ..
//when text exceeds it will be trancated via elipses...
width: 130.0,
child: Text('I have a trancated text',
style: TextStyle(fontSize: 20),
softWrap: false,
overflow: TextOverflow.ellipsis,
),
),
);
}
}
编辑: 你可以使用这个纯粹的dart代码作为Flutter的原始解决方案
void main() {
String to_be_truncated = "Dart is excellent but flutter is awesome";
int truncateAt = to_be_truncated.length-1;//if you use to_be_truncated.lengh no truncation will happen
String elepsis = "..."; //define your variable truncation elipsis here
String truncated ="";
if(to_be_truncated.length > truncateAt){
truncated = to_be_truncated.substring(0,truncateAt-elepsis.length)+elepsis;
}else{
truncated = to_be_truncated;
}
print(truncated);
}
8条答案
按热度按时间omqzjyyz1#
创建扩展名.dart文件。
将此用作自定义扩展名。
用途
dohp0rv52#
以下方法基于前面的答案,具有以下优点:
efzxgjgh3#
再举一个例子,不要剪字。
如何使用的示例
结果是
hello world...
uqzxnwby4#
所有建议的解决方案的问题是,他们截断字符串以适应字符串的给定大小。但是当我们真正得到字符串太长的问题时?是的,当外部组件对于我们的字符串太小时就会发生这种情况。所有建议的解决方案都会切断字符串,即使有足够的空间容纳它,例如,关于wingow size changing on desktop.几年前我在java中根据显示字符串的组件的大小解决了这个问题,但是我还没有在Flutter中找到解决方案。
我发现:-)
u4dcyp6a5#
你可以这样做:
6mw9ycah6#
您可以使用
replaceRange
方法进行此操作。replaceRange
下面是一个完整的示例:
laawzig27#
使用如下所示的容器 Package 文本小部件
请:阅读下面代码中的注解行
编辑:
你可以使用这个纯粹的dart代码作为Flutter的原始解决方案
c8ib6hqw8#
可以对字符串使用Extension:
然后