프로그래밍 공부 메모/flutter
문자열에서 '\n'이 몇개 인지 찾는 방법 (부제 : read more 버튼 만들기)
jjs815
2022. 8. 21. 23:56
더 보기 버튼을 만들려고 찾다가 발견함
플러터 Text()에 maxLine 속성에 값을 넣어 최대 몇 줄까지 보여 줄 것인지 설정이 가능하다
이때 '\n'.allMatches(text).length 사용하면 입력받은 텍스트를 가변적으로 maxLine을 조작이 가능하다!
import 'package:flutter/material.dart';
class ReadMore extends StatefulWidget {
ReadMore(
{super.key,
required this.itemName,
required this.text,
required this.maxLine});
String text;
String itemName;
int maxLine;
@override
State<ReadMore> createState() => _ReadMoreState();
}
class _ReadMoreState extends State<ReadMore> {
bool isReadMore = false;
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () {
setState(() {
isReadMore = !isReadMore;
});
},
child: bulidText(widget.itemName, widget.text, widget.maxLine));
}
Widget bulidText(String itemName, String text, int maxLine) {
print(text.contains('\n'));
print('\n'.allMatches(text).length + 1); // 마지막 출 까지 포함
final maxLines = isReadMore ? null : maxLine;
final overFlow = isReadMore ? TextOverflow.visible : TextOverflow.ellipsis;
return Column(
children: [
Text(itemName),
Row(children: [
Text(
text,
//maxLines: maxLines,
//overflow: overFlow,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
),
),
Spacer(),
Icon(Icons.keyboard_arrow_down),
]),
],
);
}
}
반응형