├── ProjectStructure.lua ├── main.dart ├── README.md ├── auth_screen.dart ├── health_data_screen.dart └── web_socket_screen.dart /ProjectStructure.lua: -------------------------------------------------------------------------------- 1 | /lib 2 | |-- main.dart 3 | |-- auth_screen.dart 4 | |-- health_data_screen.dart 5 | |-- web_socket_screen.dart 6 | |-- ... 7 | -------------------------------------------------------------------------------- /main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'auth_screen.dart'; 3 | 4 | void main() { 5 | runApp(MyApp()); 6 | } 7 | 8 | class MyApp extends StatelessWidget { 9 | @override 10 | Widget build(BuildContext context) { 11 | return MaterialApp( 12 | title: 'CancerCare Connect', 13 | theme: ThemeData( 14 | primarySwatch: Colors.blue, 15 | ), 16 | home: AuthScreen(), 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CancerCare-Connect-v3 2 | 3 | 4 | 5 | main.dart sets up the main app structure and initial screen (AuthScreen). 6 | AuthScreen is a simple screen with a login button that navigates to HealthDataScreen. 7 | HealthDataScreen is another screen with a button that navigates to WebSocketScreen. 8 | WebSocketScreen connects to a WebSocket server at ws://localhost:5000/ws and allows sending messages. 9 | Make sure to add the necessary dependencies in your pubspec.yaml file, and run flutter pub get to fetch them. 10 | -------------------------------------------------------------------------------- /auth_screen.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'health_data_screen.dart'; 3 | 4 | class AuthScreen extends StatelessWidget { 5 | @override 6 | Widget build(BuildContext context) { 7 | return Scaffold( 8 | appBar: AppBar( 9 | title: Text('Login'), 10 | ), 11 | body: Center( 12 | child: ElevatedButton( 13 | onPressed: () { 14 | Navigator.push( 15 | context, 16 | MaterialPageRoute(builder: (context) => HealthDataScreen()), 17 | ); 18 | }, 19 | child: Text('Login'), 20 | ), 21 | ), 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /health_data_screen.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'web_socket_screen.dart'; 3 | 4 | class HealthDataScreen extends StatelessWidget { 5 | @override 6 | Widget build(BuildContext context) { 7 | return Scaffold( 8 | appBar: AppBar( 9 | title: Text('Health Data'), 10 | ), 11 | body: Center( 12 | child: ElevatedButton( 13 | onPressed: () { 14 | Navigator.push( 15 | context, 16 | MaterialPageRoute(builder: (context) => WebSocketScreen()), 17 | ); 18 | }, 19 | child: Text('View Health Data'), 20 | ), 21 | ), 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /web_socket_screen.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:web_socket_channel/io.dart'; 3 | 4 | class WebSocketScreen extends StatefulWidget { 5 | @override 6 | _WebSocketScreenState createState() => _WebSocketScreenState(); 7 | } 8 | 9 | class _WebSocketScreenState extends State { 10 | final channel = IOWebSocketChannel.connect('ws://localhost:5000/ws'); 11 | String message = ''; 12 | 13 | @override 14 | Widget build(BuildContext context) { 15 | return Scaffold( 16 | appBar: AppBar( 17 | title: Text('WebSocket'), 18 | ), 19 | body: Center( 20 | child: Column( 21 | mainAxisAlignment: MainAxisAlignment.center, 22 | children: [ 23 | Text('Message: $message'), 24 | ElevatedButton( 25 | onPressed: () { 26 | channel.sink.add('Hello from Flutter!'); 27 | }, 28 | child: Text('Send Message'), 29 | ), 30 | ], 31 | ), 32 | ), 33 | ); 34 | } 35 | 36 | @override 37 | void dispose() { 38 | channel.sink.close(); 39 | super.dispose(); 40 | } 41 | } 42 | --------------------------------------------------------------------------------