프로그래밍 공부 메모/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),
        ]),
      ],
    );
  }
}
반응형