On iOS, certain chat messages would have a trailing invalid/unknown "emoji" (question mark inside a square). This is caused by certain Twitch IRC clients appending the INVALID Unicode character (U+E5000) to circumvent restrictions on sending identical messages in quick succession. To resolve this, I added a check on the last word of the message. If the character exists, the word will be remove. Since the word will only contain a space and the character, it can be safely removed. This commit also contains an additional "optimization" through StringBuffers. By using the buffer there will be less TextSpan widgets which theoretically should improve performance. |
||
|---|---|---|
| .github/workflows | ||
| android | ||
| ios | ||
| lib | ||
| test | ||
| web | ||
| .gitignore | ||
| .metadata | ||
| analysis_options.yaml | ||
| pubspec.lock | ||
| pubspec.yaml | ||
| README.md | ||
Frosty 
A Twitch client for iOS and Android, built with Flutter and originally with SwiftUI.
Features
- Browse top and followed channels on Twitch
- Watch live streams with live chat
- Support for BTTV, FFZ, and 7TV emotes, including GIFs
Motivation
Currently, the only available Twitch client on iOS is the official Twitch app. I wanted to make a Twitch client that provides some important missing features in the official app. I also saw this as an opportunity to learn and become familiar with the mobile development ecosystem.
The Problem
A major problem with the official Twitch app is that emotes from services such as BetterTTV (FFZ), FrankerFaceZ (FFZ), and 7TV are not officially supported. Twitch is unaffiliated with these services, hence why they haven't been integrated officially.
As a result, the millions of users of these services have an unideal viewing experience on the official Twitch app. In the stream chat, only text is positioned where emotes should be (imagine only being able to see :emoji: rather than the emojis themselves).
This app aims to bring these emotes and other general quality of life features to both iOS and Android.