텍스트 콘텐츠의 읽기 시간을 추정하는 가벼운 Dart 라이브러리로, Medium의 접근 방식과 유사합니다. 단어 수를 분석하고 사용자 정의 가능한 평균 독서 속도를 적용하여 정확한 시간 추정을 제공합니다. 간단함과 성능을 고려하여 설계되었으며, 블로그, 기사 또는 사용자가 텍스트를 읽는 데 걸리는 시간을 알고 싶어 하는 모든 앱에 적합합니다. Android, iOS, Web, macOS, Windows, Linux 등 주요 플랫폼을 모두 지원합니다.
사용 사례
기사 읽기 소요 시간 추정
블로그에서 읽기 시간 표시
콘텐츠 앱의 사용자 경험 향상
마크다운 또는 리치 텍스트 에디터와의 통합
시간 기반 콘텐츠 추천 제공
주요 기능
단어 기반 읽기 시간 계산
사용자 설정 가능한 독서 속도
경량이고 빠름
크로스 플랫폼 지원
간단한 API 통합
순수 텍스트와 HTML 모두를 지원합니다
적합한 대상
콘텐츠 중심 애플리케이션
블로그 플랫폼
뉴스 앱
교육 도구
긴 형식의 텍스트를 포함하는 앱
고려 사항
정확도는 평균 읽기 속도 설정에 따라 달라집니다
복잡한 텍스트 레이아웃을 고려하지 않음
표준 영문 텍스트에 가장 적합
영어 이외의 콘텐츠에 맞게 조정이 필요할 수 있습니다
단어 수 분석에 국한되며, 이해 시간은 아님
원본 README
연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.
Reaqding time
A small dart library that predicts ( more like calculates ) reading time like medium does .
reading_time helps you calculate / estimate reading time for any text . It is very useful if you are building an article listing , news or blog like app or website with dart . It is the dart port of the original reading-time module ( FOR JS ) by Nicolas.
There are virtually no locale limit . It is using 200 (wpm) because an average reader can read 200 words per minute .
Example
import'package:reading_time/reading_time.dart';
// from https://www.lipsum.com/feed/htmlconst EXAMPLE_TEXT = """
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut tempus tempor lacus id commodo. Nullam fermentum vitae nisi eget scelerisque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse elementum at sapien vitae rutrum. Vestibulum id ex et sem vehicula fermentum sed non tortor. Integer iaculis, justo et blandit sagittis, odio ligula molestie sem, eu lobortis metus nibh quis nibh. Fusce ornare varius tellus, ac porta est. In eleifend iaculis erat vel iaculis. Maecenas sit amet aliquet diam. Proin eu semper tortor. Maecenas accumsan rutrum erat, ornare ullamcorper ipsum hendrerit quis. Sed at pulvinar erat.
In et cursus dui. In viverra tincidunt maximus. Etiam sit amet lobortis mauris, eget sollicitudin augue. Mauris finibus felis nisl. Mauris id lorem blandit ligula faucibus rhoncus. Sed molestie ipsum id nisl vestibulum vehicula. Proin dictum mi iaculis velit aliquet rhoncus. Suspendisse elementum maximus velit, ut elementum sem cursus ac. Phasellus efficitur congue odio, sit amet suscipit lacus convallis pulvinar. Etiam posuere dolor at nunc bibendum venenatis. Nam ac justo risus. Etiam ac metus sit amet diam malesuada maximus. Quisque odio arcu, cursus eget suscipit id, hendrerit non nisl. Fusce lacinia eu ipsum non mattis.
Mauris bibendum pellentesque quam. Sed bibendum malesuada orci, vel aliquam sem. Nunc sit amet ante id eros finibus cursus eget pharetra mi. Quisque eleifend accumsan lorem, id interdum felis rhoncus quis. Morbi a auctor risus. Nam placerat, nisl dapibus commodo facilisis, tellus metus semper odio, vel fringilla nisi mi id sapien. Etiam eget turpis sed ante venenatis accumsan ut non velit. Integer ut tellus placerat, tempus erat sit amet, scelerisque turpis. Aliquam velit leo, dictum quis dictum vitae, congue a turpis. Integer gravida risus ante.
Aenean ac nunc lacinia, vehicula purus at, malesuada nulla. Sed fermentum ante eu nisl pulvinar vehicula. Phasellus sem ante, cursus ut nisl sit amet, sagittis mollis magna. Quisque dapibus blandit tincidunt. Donec condimentum leo viverra egestas lobortis. Nulla pharetra ex ex, non laoreet ligula sodales sed. Donec tortor elit, feugiat et nunc et, sagittis eleifend metus. Nullam erat turpis, tincidunt sed quam sit amet, condimentum tincidunt leo. Curabitur imperdiet pharetra libero a cursus. Donec massa nisi, faucibus nec ornare sed, eleifend at dolor. Cras ullamcorper auctor nisl in porta.
Maecenas eleifend lobortis lectus vitae porttitor. Suspendisse at ex nec ante lobortis lacinia. In id diam aliquet nunc rhoncus placerat quis et quam. Nulla ut egestas diam. Quisque varius, nisi eget ullamcorper tincidunt, lacus eros fringilla nunc, vitae faucibus lacus diam at leo. Cras magna enim, interdum eget consectetur non, volutpat sit amet ex. Quisque mollis eget risus ac aliquam. Integer ultricies lorem neque.
""";
main(List<String> args) {
var reader = readingTime(EXAMPLE_TEXT);
print(reader.words); // 433print(reader.msg); // 2 min readprint(reader.time); // 129900.0print(reader.minutes); // 2.165
}
If the text is too small , the text property will return 'less than a minute'