InnerBhakti Project Guide
InnerBhakti Project Guide
Folder Structure
InnerBhakti_Project/
| +- lib/
| +- screens/ # UI Screens
| +- program_list_screen.dart
| +- program_details_screen.dart
| +- audio_player_screen.dart
1. Create `backend/index.js`:
```javascript
const express = require('express');
app.use(cors());
app.use(express.json());
mongoose.connect('your-mongodb-uri', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
title: String,
image: String,
});
res.json(programs);
});
res.json(program);
});
```
Create `flutter_app/lib/main.dart`:
```dart
import 'package:flutter/material.dart';
import 'screens/program_list_screen.dart';
void main() {
runApp(const InnerBhaktiApp());
const InnerBhaktiApp({super.key});
@override
return MaterialApp(
title: 'InnerBhakti',
theme: ThemeData(primarySwatch: Colors.blue),
home: ProgramListScreen(),
);
```
Flutter Screens
`program_list_screen.dart`:
```dart
import 'package:flutter/material.dart';
import 'dart:convert';
import 'program_details_screen.dart';
@override
@override
void initState() {
super.initState();
fetchPrograms();
fetchPrograms() async {
setState(() {
programs = jsonDecode(response.body);
});
@override
return Scaffold(
body: ListView.builder(
itemCount: programs.length,
return ListTile(
title: Text(programs[index]['title']),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
),
);
},
);
},
),
);
```
`program_details_screen.dart`:
```dart
import 'package:flutter/material.dart';
import 'dart:convert';
import 'audio_player_screen.dart';
ProgramDetailsScreen({required this.programId});
return jsonDecode(response.body);
@override
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder(
future: fetchProgramDetails(),
if (snapshot.connectionState == ConnectionState.waiting) {
return ListView(
children: program['tracks'].map<Widget>((track) {
return ListTile(
title: Text(track['title']),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
),
);
},
);
}).toList(),
);
},
),
);
```
`audio_player_screen.dart`:
```dart
import 'package:flutter/material.dart';
import 'package:audioplayers/audioplayers.dart';
AudioPlayerScreen({required this.audioUrl});
@override
@override
void initState() {
super.initState();
player.setUrl(widget.audioUrl);
}
@override
void dispose() {
player.dispose();
super.dispose();
@override
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
),
ElevatedButton(
),
],
),
),
);
}
```