Search packages, repositories and app categories

Package detailsv1.3.0

message_segment_calculator

Efficiently calculate SMS segments for messages with support for GSM and UCS-2 encoding. Ideal for apps that require precise SMS length and cost management.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
299
Likes
8
Pub points
160

Install package

flutter pub add message_segment_calculator

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

The message_segment_calculator package efficiently determines the number of SMS segments required for a given message, supporting both GSM and UCS-2 character encodings. It enables precise control over message length and helps manage SMS costs by accurately calculating how many segments a message will occupy. Ideal for applications that send SMS notifications, alerts, or marketing messages where delivery efficiency and cost are critical. The package is lightweight and compatible across multiple platforms including Android, iOS, Web, macOS, Windows, and Linux.

Use cases

  • SMS cost estimation
  • Message length validation
  • Bulk SMS management
  • Notification systems
  • Compliance with SMS limits
  • Cross-platform SMS apps

Key features

  • Supports GSM and UCS-2 encoding
  • Accurate segment counting
  • Cross-platform compatibility
  • Lightweight and fast
  • Real-time length calculation
  • Handles special characters correctly

Suitable for

  • Messaging apps
  • Telecom utilities
  • Marketing platforms
  • Enterprise notification systems
  • Apps requiring SMS cost control

Considerations

  • Requires manual handling of long messages
  • Does not send messages—only calculates segments
  • Encoding choice must be selected based on content
  • Not suitable for MMS or multimedia messaging
  • Limited to SMS-specific use cases

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

SMS Segment Calculator

The SMS Segment Calculator is a Dart package designed to help developers accurately calculate the number of SMS segments required for messages. It supports both GSM-7 and UCS-2 encoding standards, providing a robust solution for applications that involve SMS messaging. The package ensures cost-effective messaging by optimizing message segmentation and encoding.

Key Features

  • Accurate SMS Segmentation: Automatically calculates the number of segments needed for a given SMS message based on its content and required encoding (GSM-7 or UCS-2).
  • Support for Special Characters and Emojis: Detects texts containing emojis or special characters and switches to UCS-2 encoding when necessary.
  • Comprehensive Encoding Management: Handles the encoding of individual characters and manages their conversion to the appropriate encoding format.
  • Cost Management: Provides precise segment counts for budgeting and planning SMS costs effectively.
  • Line Break Handling: Identifies different line break styles and issues warnings if incompatible styles are detected.

Installation

To integrate the SMS Segment Calculator into your Dart or Flutter project, add the following dependency to your pubspec.yaml file:

dependencies:
  message_segment_calculator: ^1.1.0



## Usage

import 'package:flutter/material.dart';
import 'package:message_segment_calculator/src/segmented_message.dart';

void main() {
  runApp(const App());
}

/// The root widget of the application.
class App extends StatelessWidget {
  const App({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: MessageSegmentCalculatorWidget(),
    );
  }
}

/// A stateful widget that provides a UI for calculating message segments.
class MessageSegmentCalculatorWidget extends StatefulWidget {
  const MessageSegmentCalculatorWidget({super.key});

  @override
  State<MessageSegmentCalculatorWidget> createState() =>
      _MessageSegmentCalculatorWidgetState();
}

/// The state class for [MessageSegmentCalculatorWidget].
class _MessageSegmentCalculatorWidgetState
    extends State<MessageSegmentCalculatorWidget> {
  final textEditingController = TextEditingController();
  SegmentedMessage? segmentedMessage;

  @override
  void dispose() {
    textEditingController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Message Segment Calculator'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(10),
        child: Column(
          children: [
            const Text('Enter text'),
            const SizedBox(height: 10),
            TextFormField(
              decoration: const InputDecoration(),
              controller: textEditingController,
              onChanged: (value) {
                setState(() {
                  segmentedMessage = SegmentedMessage(value);
                });
              },
            ),
            const SizedBox(height: 10),
            Text('Number of characters: ${segmentedMessage?.numberOfCharacters}'),
            Text('Number of segments: ${segmentedMessage?.segmentsCount}'),
            Text('Number of Unicode scalars: ${segmentedMessage?.numberOfUnicodeScalars}'),
            Text('Message size in bits: ${segmentedMessage?.messageSize}'),
            Text('Total size in bits: ${segmentedMessage?.totalSize}'),
          ],
        ),
      ),
    );
  }
}




### Key Additions:
- **Detailed Descriptions**: Each class is explained to clarify its role in the package.
- **Usage Example**: Shows a practical example to help developers quickly understand how to use the package.
- **Installation Instructions**: Guides users on how to add the package to their project.
- **Contribution Guidelines**: Encourages contributions and provides a link to the issues page.

This README provides a comprehensive overview, making it easier for users to understand and use the package effectively.

Categories

Source repository

Projects using this package

No data available yet.