Creta RSI
A Flutter widget that continuously monitors stock prices, detects RSI (Relative Strength Index) signals, and displays real-time market information. This package provides a highly customizable and visually appealing way to track US and Korean stock markets, as well as major global indices.
Features
- Real-time Stock & Index Tracking: Monitors prices for a user-defined watchlist of stocks (US & Korea) and 8 major global indices.
- RSI Signal Detection: Calculates RSI and displays clear buy/sell signals based on configurable thresholds.
- Auto-Rotating Display: Cycles through an indices overview screen and individual stock detail screens with smooth animations.
- Interactive Controls: Manually navigate between stocks (
Previous/Next) and pause/resume the auto-rotation. - Customizable Settings: Easily configure the RSI period, buy/sell thresholds, stock watchlist, and rotation speed through a settings panel.
- Light/Dark Mode: Toggle between light and dark themes.
- Responsive Layout: Adapts its layout for wide and narrow screens.
Getting Started
Prerequisites
Your Flutter project must be set up to handle platform-specific configurations if you intend to run on desktop or mobile.
Installation
Add this to your package's pubspec.yaml file:
dependencies:
creta_rsi: ^1.0.2 # Replace with the latest version
Then, run flutter pub get.
Usage
Import the package and use the CretaRSISplashScreen as your initial widget. It will handle data loading and then navigate to the main display screen.
import 'package:flutter/material.dart';
import 'package:creta_rsi/creta_rsi.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
void main() {
// Ensure necessary bindings are initialized
WidgetsFlutterBinding.ensureInitialized();
// It's recommended to initialize shared_preferences and other services here
// before running the app.
runApp(const ProviderScope(child: MyApp()));
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Creta RSI Example',
theme: ThemeData(
primarySwatch: Colors.blue,
brightness: Brightness.light,
),
darkTheme: ThemeData(
brightness: Brightness.dark,
),
// Use the settings to determine themeMode
themeMode: ThemeMode.light, // or ThemeMode.dark
home: const CretaRSISplashScreen(),
);
}
}
The CretaRSIMainScreen widget will be displayed automatically after the initial data is loaded by the splash screen.
Screenshots
(You can add screenshots of your widget here)
Main Display (Indices)

Main Display (Stock)

Settings Panel

License
This project is licensed under the MIT License - see the LICENSE file for details.
Libraries
- core/background/background_service
- core/constants
- core/error/exceptions
- creta_rsi
- data/datasources/settings_local_datasource
- data/datasources/settings_local_datasource_impl
- data/datasources/stock_api_datasource
- data/datasources/stock_api_datasource_impl
- data/models/settings_model
- data/models/stock_model
- data/repositories/settings_repository_impl
- data/repositories/stock_repository_impl
- domain/entities/rsi_signal
- domain/entities/settings
- domain/entities/stock
- domain/repositories/settings_repository
- domain/repositories/stock_repository
- domain/usecases/calculate_rsi
- domain/usecases/get_settings
- domain/usecases/get_stock_list
- domain/usecases/save_settings
- main
- presentation/riverpod/providers
- presentation/riverpod/settings_notifier
- presentation/riverpod/settings_state
- presentation/riverpod/stock_notifier
- presentation/riverpod/stock_state
- presentation/screens/main_screen
- presentation/screens/splash_screen
- presentation/widgets/current_time_widget
- presentation/widgets/indices_display_widget
- presentation/widgets/settings_panel_widget
- presentation/widgets/signal_list_widget
- presentation/widgets/stock_display_widget