├── assets ├── 1.jpg ├── 2.jpg ├── 3.JPG ├── 4.JPG ├── 5.jpg ├── 6.jpg ├── 7.jpg ├── 8.jpg ├── 9.jpg ├── 10.jpg └── bps.png ├── android ├── app │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ ├── drawable │ │ │ │ │ ├── bps.png │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ └── values │ │ │ │ │ └── styles.xml │ │ │ ├── java │ │ │ │ ├── com │ │ │ │ │ └── example │ │ │ │ │ │ └── school │ │ │ │ │ │ └── MainActivity.java │ │ │ │ └── io │ │ │ │ │ └── flutter │ │ │ │ │ └── plugins │ │ │ │ │ └── GeneratedPluginRegistrant.java │ │ │ └── AndroidManifest.xml │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ └── profile │ │ │ └── AndroidManifest.xml │ └── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── settings.gradle └── build.gradle ├── Screenshot_2019-07-06-16-09-56-465_com.bpsplayschool.app.png ├── Screenshot_2019-07-06-16-10-02-448_com.bpsplayschool.app.png ├── Screenshot_2019-07-06-16-10-05-763_com.bpsplayschool.app.png ├── lib ├── school │ ├── contact.dart │ ├── about.dart │ └── admission.dart ├── gallery.dart ├── main.dart ├── result.dart ├── updates.dart ├── home.dart └── student.dart ├── README.md ├── LICENSE ├── pubspec.yaml └── pubspec.lock /assets/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/assets/1.jpg -------------------------------------------------------------------------------- /assets/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/assets/2.jpg -------------------------------------------------------------------------------- /assets/3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/assets/3.JPG -------------------------------------------------------------------------------- /assets/4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/assets/4.JPG -------------------------------------------------------------------------------- /assets/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/assets/5.jpg -------------------------------------------------------------------------------- /assets/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/assets/6.jpg -------------------------------------------------------------------------------- /assets/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/assets/7.jpg -------------------------------------------------------------------------------- /assets/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/assets/8.jpg -------------------------------------------------------------------------------- /assets/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/assets/9.jpg -------------------------------------------------------------------------------- /assets/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/assets/10.jpg -------------------------------------------------------------------------------- /assets/bps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/assets/bps.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/bps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/android/app/src/main/res/drawable/bps.png -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | android.enableJetifier=true 2 | android.useAndroidX=true 3 | org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m 4 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Screenshot_2019-07-06-16-09-56-465_com.bpsplayschool.app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/Screenshot_2019-07-06-16-09-56-465_com.bpsplayschool.app.png -------------------------------------------------------------------------------- /Screenshot_2019-07-06-16-10-02-448_com.bpsplayschool.app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/Screenshot_2019-07-06-16-10-02-448_com.bpsplayschool.app.png -------------------------------------------------------------------------------- /Screenshot_2019-07-06-16-10-05-763_com.bpsplayschool.app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/strbbrn/Fluttter-School-App/HEAD/Screenshot_2019-07-06-16-10-05-763_com.bpsplayschool.app.png -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Thu Apr 25 23:12:57 IST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip 7 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/example/school/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.school; 2 | 3 | import android.os.Bundle; 4 | import io.flutter.app.FlutterActivity; 5 | import io.flutter.plugins.GeneratedPluginRegistrant; 6 | 7 | public class MainActivity extends FlutterActivity { 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | GeneratedPluginRegistrant.registerWith(this); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /lib/school/contact.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; 3 | class Contact extends StatelessWidget { 4 | @override 5 | Widget build(BuildContext context) { 6 | return Scaffold( 7 | 8 | body:WebviewScaffold( 9 | appBar: AppBar( 10 | title: Text('Contact'), 11 | elevation: 2.0, 12 | ), 13 | url: 'https://example.com/contact.php', 14 | withJavascript: true, 15 | 16 | 17 | ) , 18 | ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.4.0' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Fluttter-School-App 2 | A School App based on Flutter Framework. 3 | mail us: skybirdwebmedia@gmail.com 4 | Demo(Dead): 5 | [https://play.google.com/store/apps/details?id=com.bpsplayschool.app&hl=en](https://play.google.com/store/apps/details?id=com.bpsplayschool.app&hl=en). 6 | 7 | 8 | 9 | ## 🌴 License 10 | **MIT** 11 | 12 | **You are welcome to use this however you wish within the MIT license, but please retain my credentials and links back to this repo.** 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Shashi Kumar 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /lib/gallery.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class GalleryPage extends StatelessWidget { 4 | @override 5 | Widget build(BuildContext context) { 6 | return Scaffold( 7 | appBar: AppBar( 8 | title: Text('Gallery'), 9 | elevation: 2.0, 10 | backgroundColor: Color.fromARGB(255, 255, 105, 180), 11 | ), 12 | body: Container( 13 | color: Colors.white30, 14 | child: new GridView.count( 15 | crossAxisCount: 2, 16 | childAspectRatio: 1.0, 17 | padding: const EdgeInsets.all(4.0), 18 | mainAxisSpacing: 4.0, 19 | crossAxisSpacing: 4.0, 20 | children: [ 21 | 'assets/1.jpg', 22 | 'assets/2.jpg', 23 | 'assets/3.JPG', 24 | 'assets/4.JPG', 25 | 'assets/5.jpg', 26 | 'assets/6.jpg', 27 | 'assets/7.jpg', 28 | 'assets/8.jpg', 29 | 'assets/9.jpg', 30 | 'assets/10.jpg' 31 | ].map((String url) { 32 | return ClipRRect( 33 | borderRadius: BorderRadius.only( 34 | topLeft: Radius.circular(15.0), 35 | topRight: Radius.circular(15.0), 36 | bottomRight: Radius.circular(15.0), 37 | bottomLeft: Radius.circular(15.0) 38 | ), 39 | child: GridTile( 40 | child: new Image.asset(url, fit: BoxFit.cover), 41 | ), 42 | 43 | ); 44 | }).toList()), 45 | ), 46 | ); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 9 | 10 | 14 | 21 | 25 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java: -------------------------------------------------------------------------------- 1 | package io.flutter.plugins; 2 | 3 | import io.flutter.plugin.common.PluginRegistry; 4 | import com.pichillilorenzo.flutter_inappbrowser.InAppBrowserFlutterPlugin; 5 | import pt.tribeiro.flutter_plugin_pdf_viewer.FlutterPluginPdfViewerPlugin; 6 | import com.flutter_webview_plugin.FlutterWebviewPlugin; 7 | import io.flutter.plugins.googlemaps.GoogleMapsPlugin; 8 | import io.flutter.plugins.pathprovider.PathProviderPlugin; 9 | import com.tekartik.sqflite.SqflitePlugin; 10 | import io.flutter.plugins.urllauncher.UrlLauncherPlugin; 11 | 12 | /** 13 | * Generated file. Do not edit. 14 | */ 15 | public final class GeneratedPluginRegistrant { 16 | public static void registerWith(PluginRegistry registry) { 17 | if (alreadyRegisteredWith(registry)) { 18 | return; 19 | } 20 | InAppBrowserFlutterPlugin.registerWith(registry.registrarFor("com.pichillilorenzo.flutter_inappbrowser.InAppBrowserFlutterPlugin")); 21 | FlutterPluginPdfViewerPlugin.registerWith(registry.registrarFor("pt.tribeiro.flutter_plugin_pdf_viewer.FlutterPluginPdfViewerPlugin")); 22 | FlutterWebviewPlugin.registerWith(registry.registrarFor("com.flutter_webview_plugin.FlutterWebviewPlugin")); 23 | GoogleMapsPlugin.registerWith(registry.registrarFor("io.flutter.plugins.googlemaps.GoogleMapsPlugin")); 24 | PathProviderPlugin.registerWith(registry.registrarFor("io.flutter.plugins.pathprovider.PathProviderPlugin")); 25 | SqflitePlugin.registerWith(registry.registrarFor("com.tekartik.sqflite.SqflitePlugin")); 26 | UrlLauncherPlugin.registerWith(registry.registrarFor("io.flutter.plugins.urllauncher.UrlLauncherPlugin")); 27 | } 28 | 29 | private static boolean alreadyRegisteredWith(PluginRegistry registry) { 30 | final String key = GeneratedPluginRegistrant.class.getCanonicalName(); 31 | if (registry.hasPlugin(key)) { 32 | return true; 33 | } 34 | registry.registrarFor(key); 35 | return false; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:bottom_navy_bar/bottom_navy_bar.dart'; 3 | import 'package:school/gallery.dart'; 4 | import 'package:school/home.dart'; 5 | import 'package:school/student.dart'; 6 | 7 | 8 | 9 | void main() => runApp(MaterialApp( 10 | title: 'School', 11 | home: MyHomePage(), 12 | // theme: ThemeData( 13 | // brightness: Brightness.light, 14 | // primaryColor: Colors.lightBlue[800], 15 | // accentColor: Colors.cyan[600], 16 | // ), 17 | )); 18 | 19 | class MyHomePage extends StatefulWidget { 20 | @override 21 | _MyHomePageState createState() => _MyHomePageState(); 22 | } 23 | 24 | class _MyHomePageState extends State { 25 | @override 26 | void initState(){ 27 | super.initState(); 28 | 29 | 30 | } 31 | 32 | int currentIndex = 0; 33 | final _widgetOptions = [ 34 | Home(), 35 | GalleryPage(), 36 | Student(), 37 | ]; 38 | @override 39 | Widget build(BuildContext context) { 40 | return Scaffold( 41 | 42 | body: Container( 43 | child: _widgetOptions.elementAt(currentIndex), 44 | decoration: new BoxDecoration(color: Colors.white), 45 | ), 46 | bottomNavigationBar: BottomNavyBar( 47 | onItemSelected: (index) => setState(() { 48 | currentIndex = index; 49 | }), 50 | items: [ 51 | BottomNavyBarItem( 52 | icon: Icon(Icons.apps), 53 | title: Text('Home'), 54 | activeColor: Colors.red, 55 | ), 56 | BottomNavyBarItem( 57 | icon: Icon(Icons.image), 58 | title: Text('Gallery'), 59 | activeColor: Colors.purpleAccent, 60 | ), 61 | BottomNavyBarItem( 62 | icon: Icon(Icons.people), 63 | title: Text('Student'), 64 | activeColor: Colors.blue, 65 | ) 66 | ], 67 | ), 68 | ); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /lib/result.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; 3 | 4 | 5 | class ResultView extends StatefulWidget { 6 | ResultView(this.url); 7 | final String url; 8 | 9 | @override 10 | _ResultViewState createState() => _ResultViewState(); 11 | } 12 | 13 | class _ResultViewState extends State { 14 | 15 | String path = 'https://example.com/frame.php?path='; 16 | double progress = 0; 17 | @override 18 | void initState() { 19 | super.initState(); 20 | path += widget.url; 21 | print(path); 22 | } 23 | 24 | @override 25 | void dispose() { 26 | super.dispose(); 27 | } 28 | 29 | @override 30 | Widget build(BuildContext context) { 31 | return Scaffold( 32 | appBar: AppBar( 33 | title: const Text('Result'), 34 | ), 35 | body: Container( 36 | child: Column( 37 | children: [ 38 | (progress != 1.0) ? LinearProgressIndicator(value: progress) : null, 39 | Expanded( 40 | child: Container( 41 | margin: const EdgeInsets.all(0.0), 42 | decoration: BoxDecoration( 43 | border: Border.all(color: Colors.blueAccent)), 44 | child: WebviewScaffold( 45 | appBar: AppBar( 46 | title: Text("BPS PLAY SCHOOL"), 47 | ), 48 | url: path, 49 | scrollBar: true, 50 | withZoom: true, 51 | withLocalStorage: true, 52 | hidden: true, 53 | allowFileURLs: true, 54 | withJavascript: true, 55 | 56 | initialChild: Container( 57 | color: Colors.white, 58 | child: const Center( 59 | child: Text( 60 | 'Wait .....\n Checking Internet Connection', 61 | style: TextStyle( 62 | fontWeight: FontWeight.bold, fontSize: 20.0), 63 | ), 64 | ), 65 | ), 66 | )), 67 | ), 68 | ] 69 | ) 70 | ) 71 | ); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /lib/school/about.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class About extends StatelessWidget { 4 | @override 5 | Widget build(BuildContext context) { 6 | return Scaffold( 7 | appBar: AppBar( 8 | title: Text('About'), 9 | elevation: 2.0, 10 | ), 11 | body: SingleChildScrollView( 12 | child: Column( 13 | children: [ 14 | Padding( 15 | padding: EdgeInsets.all(3.0), 16 | ), 17 | 18 | Padding( 19 | padding: EdgeInsets.all(3.0), 20 | ), 21 | ClipRRect( 22 | borderRadius: BorderRadius.only( 23 | topLeft: Radius.circular(15.0), 24 | topRight: Radius.circular(15.0), 25 | bottomRight: Radius.circular(15.0), 26 | bottomLeft: Radius.circular(15.0)), 27 | child: Container( 28 | child: Image.asset('assets/1.jpg', 29 | width: MediaQuery.of(context).size.width / 1.023), 30 | ), 31 | ), 32 | Center( 33 | child: Container( 34 | margin: EdgeInsets.fromLTRB(10.0, 3.0, 10.0, 13.0), 35 | padding: EdgeInsets.all(3.0), 36 | child: Card( 37 | child: ListTile( 38 | title: Text( 39 | 'BPS PLAY SCHOOL is a well known school in Tatisilwai area.\nIt is established in month of feb. 2018.And now it is going to spread his education throughouot.The aim of the School is to literate all the children those who belong to remote village area. It is known fact that children do their most important learning before the age five. Up to this age, for kids each morning is the dawn of another amazing adventure. Considering this fact, our focus is only on developing academic skills, but also intellectual, emotional, linguistic, physical, social and moral skills that will ensure all-round development of children. We believe that children are active learners, who learn best from interacting with nature, other children and adults in child-centered activities. BPS PLAY SCHOOL provides caring and trusting environment in which children can flourish as individual. Our child-centered philosophy allows children to learn through play by exploring their environment. In order to stimulate a child\'s learning, we provide opportunities for the child to grow and develop while reading, listening and playing. Love and affection are the hallmarks of all these pursuits. The colorful and cheerful environment, child-friendly equipments, enticing toys and games at BPS PLAY SCHOOL help a child to listen and discover, imagine and create. Overall, BPS PLAY SCHOOL is not merely a school; it is a concept in education. Its a new dimension for an all round development for 2 to 6 years old children. ', 40 | style: TextStyle(fontSize: 18.0, fontFamily: "Roboto"), 41 | ), 42 | ), 43 | )), 44 | ), 45 | ], 46 | ), 47 | ), 48 | ); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: school 2 | description: A new Flutter project. 3 | 4 | # The following defines the version and build number for your application. 5 | # A version number is three numbers separated by dots, like 1.2.43 6 | # followed by an optional build number separated by a +. 7 | # Both the version and the builder number may be overridden in flutter 8 | # build by specifying --build-name and --build-number, respectively. 9 | # In Android, build-name is used as versionName while build-number used as versionCode. 10 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 11 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 12 | # Read more about iOS versioning at 13 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 14 | version: 1.0.0+1 15 | 16 | environment: 17 | sdk: ">=2.1.0 <3.0.0" 18 | 19 | dependencies: 20 | flutter: 21 | sdk: flutter 22 | carousel_slider: ^3.0.0 23 | bottom_navy_bar: ^3.0.0 24 | http: ^0.12.0+2 25 | flutter_webview_plugin: ^0.3.4 26 | path_provider: ^0.5.0+1 27 | flutter_inappbrowser: ^1.2.0 28 | url_launcher: ^5.0.3 29 | google_maps_flutter: ^0.5.16 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | # The following adds the Cupertino Icons font to your application. 38 | # Use with the CupertinoIcons class for iOS style icons. 39 | cupertino_icons: ^0.1.2 40 | 41 | 42 | dev_dependencies: 43 | flutter_test: 44 | sdk: flutter 45 | 46 | 47 | # For information on the generic Dart part of this file, see the 48 | # following page: https://www.dartlang.org/tools/pub/pubspec 49 | 50 | # The following section is specific to Flutter. 51 | flutter: 52 | 53 | # The following line ensures that the Material Icons font is 54 | # included with your application, so that you can use the icons in 55 | # the material Icons class. 56 | uses-material-design: true 57 | 58 | # To add assets to your application, add an assets section, like this: 59 | assets: 60 | - assets/ 61 | 62 | 63 | # An image asset can refer to one or more resolution-specific "variants", see 64 | # https://flutter.io/assets-and-images/#resolution-aware. 65 | 66 | # For details regarding adding assets from package dependencies, see 67 | # https://flutter.io/assets-and-images/#from-packages 68 | 69 | # To add custom fonts to your application, add a fonts section here, 70 | # in this "flutter" section. Each entry in this list should have a 71 | # "family" key with the font family name, and a "fonts" key with a 72 | # list giving the asset and other descriptors for the font. For 73 | # example: 74 | # fonts: 75 | # - family: Schyler 76 | # fonts: 77 | # - asset: fonts/Schyler-Regular.ttf 78 | # - asset: fonts/Schyler-Italic.ttf 79 | # style: italic 80 | # - family: Trajan Pro 81 | # fonts: 82 | # - asset: fonts/TrajanPro.ttf 83 | # - asset: fonts/TrajanPro_Bold.ttf 84 | # weight: 700 85 | # 86 | # For details regarding fonts from package dependencies, 87 | # see https://flutter.io/custom-fonts/#from-packages 88 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | // ... 4 | maven { url 'https://plugins.gradle.org/m2/' } // Gradle Plugin Portal 5 | } 6 | 7 | } 8 | 9 | 10 | def localProperties = new Properties() 11 | def localPropertiesFile = rootProject.file('local.properties') 12 | if (localPropertiesFile.exists()) { 13 | localPropertiesFile.withReader('UTF-8') { reader -> 14 | localProperties.load(reader) 15 | } 16 | } 17 | 18 | def flutterRoot = localProperties.getProperty('flutter.sdk') 19 | if (flutterRoot == null) { 20 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 21 | } 22 | 23 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 24 | if (flutterVersionCode == null) { 25 | flutterVersionCode = '1' 26 | } 27 | 28 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 29 | if (flutterVersionName == null) { 30 | flutterVersionName = '1.0' 31 | } 32 | 33 | 34 | apply plugin: 'com.android.application' 35 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 36 | 37 | def keystoreProperties = new Properties() 38 | def keystorePropertiesFile = rootProject.file('key.properties') 39 | if (keystorePropertiesFile.exists()) { 40 | keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) 41 | } 42 | 43 | android { 44 | 45 | compileSdkVersion 28 46 | 47 | lintOptions { 48 | disable 'InvalidPackage' 49 | checkReleaseBuilds false 50 | } 51 | 52 | defaultConfig { 53 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 54 | applicationId "com.bpsplayschool.app" 55 | minSdkVersion 17 56 | targetSdkVersion 28 57 | versionCode flutterVersionCode.toInteger() 58 | versionName flutterVersionName 59 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 60 | multiDexEnabled true 61 | 62 | 63 | } 64 | // dexOptions { 65 | // javaMaxHeapSize "4g" 66 | // preDexLibraries = false 67 | // } 68 | 69 | signingConfigs { 70 | release { 71 | keyAlias keystoreProperties['keyAlias'] 72 | keyPassword keystoreProperties['keyPassword'] 73 | storeFile file(keystoreProperties['storeFile']) 74 | storePassword keystoreProperties['storePassword'] 75 | } 76 | } 77 | buildTypes { 78 | release { 79 | signingConfig signingConfigs.release 80 | ndk { 81 | abiFilters 'armeabi-v7a' 82 | } 83 | } 84 | } 85 | 86 | 87 | } 88 | 89 | flutter { 90 | source '../..' 91 | } 92 | 93 | dependencies { 94 | testImplementation 'junit:junit:4.12' 95 | androidTestImplementation 'androidx.test:runner:1.1.1' 96 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' 97 | implementation 'androidx.multidex:multidex:2.0.1' 98 | 99 | 100 | } 101 | -------------------------------------------------------------------------------- /lib/updates.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:http/http.dart' as http; 4 | import 'package:flutter/animation.dart'; 5 | 6 | class Updates extends StatefulWidget { 7 | @override 8 | _UpdatesState createState() => _UpdatesState(); 9 | } 10 | 11 | class _UpdatesState extends State with SingleTickerProviderStateMixin { 12 | ScrollController scrollCtrl = new ScrollController(); 13 | AnimationController animateCtrl; 14 | 15 | List notices; 16 | 17 | //Future Notice Start// 18 | @override 19 | void initState() { 20 | double offset = 0.0; 21 | super.initState(); 22 | this.getNotice(); 23 | 24 | animateCtrl = 25 | new AnimationController(vsync: this, duration: Duration(seconds: 6)) 26 | ..addListener(() { 27 | if (animateCtrl.isCompleted) animateCtrl.repeat(); 28 | offset += 1.0; 29 | if (offset - 1 > scrollCtrl.offset) { 30 | offset = 0.0; 31 | } 32 | setState(() { 33 | scrollCtrl.jumpTo(offset); 34 | }); 35 | }); 36 | animateCtrl.forward(); 37 | } 38 | 39 | Future getNotice() async { 40 | var response = await http.get( 41 | Uri.encodeFull( 42 | 'http://result.bpsplayschool.com/updates.php', 43 | ), 44 | headers: {'accepts': 'application/json'}); 45 | var data = json.decode(response.body); 46 | //print(data['result'][0]['date']); 47 | 48 | print(data['result']); 49 | if (!mounted) return; 50 | setState(() { 51 | notices = data['result']; 52 | }); 53 | } 54 | 55 | @override 56 | void dispose() { 57 | animateCtrl.dispose(); 58 | super.dispose(); 59 | } 60 | 61 | //Future Notice End// 62 | @override 63 | Widget build(BuildContext context) { 64 | return Scaffold( 65 | backgroundColor: Colors.white, 66 | appBar: AppBar( 67 | leading: Image.asset('assets/bps.png'), 68 | title: Text('BPS Play School'), 69 | elevation: 2.0, 70 | backgroundColor: Color.fromARGB(255, 255, 0, 0), 71 | ), 72 | body: Column( 73 | mainAxisSize: MainAxisSize.min, 74 | children: [ 75 | Padding( 76 | padding: EdgeInsets.all(2.0), 77 | ), 78 | ClipRRect( 79 | borderRadius: BorderRadius.only( 80 | topLeft: Radius.circular(15.0), 81 | topRight: Radius.circular(15.0), 82 | bottomRight: Radius.circular(15.0), 83 | bottomLeft: Radius.circular(15.0)), 84 | child: Container( 85 | height: 50.0, 86 | width: MediaQuery.of(context).size.width / 1.029, 87 | color: Colors.amber, 88 | child: Center( 89 | child: Text( 90 | 'Update Board', 91 | style: TextStyle(fontSize: 18.0, color: Colors.white), 92 | )), 93 | ), 94 | ), 95 | Expanded( 96 | child: notices == null 97 | ? Center(child: Text('0 Updates Available')) 98 | : ListView.builder( 99 | controller: scrollCtrl, 100 | shrinkWrap: true, 101 | physics: ScrollPhysics(), 102 | itemCount: notices == null ? 0 : notices.length, 103 | itemBuilder: (BuildContext context, int index) { 104 | return Card( 105 | clipBehavior: Clip.hardEdge, 106 | child: ListTile( 107 | leading: Icon(Icons.av_timer), 108 | title: Text( 109 | notices[index]['updates'], 110 | style: TextStyle(fontStyle: FontStyle.italic), 111 | ), 112 | subtitle: 113 | Text('Posted On: ' + notices[index]['date']), 114 | ), 115 | ); 116 | }, 117 | ), 118 | ), 119 | ], 120 | ), 121 | ); 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /lib/school/admission.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; 3 | 4 | class Admission extends StatefulWidget { 5 | 6 | @override 7 | _AdmissionState createState() => _AdmissionState(); 8 | 9 | } 10 | class _AdmissionState extends State { 11 | final flutterWebviewPlugin = new FlutterWebviewPlugin(); 12 | @override 13 | void initState() { 14 | super.initState(); 15 | flutterWebviewPlugin.close(); 16 | } 17 | 18 | @override 19 | Widget build(BuildContext context) { 20 | return Scaffold( 21 | appBar: AppBar( 22 | title: Text('Admission'), 23 | elevation: 2.0, 24 | ), 25 | body: Container( 26 | padding: EdgeInsets.all(3.0), 27 | margin: EdgeInsets.all(5.0), 28 | 29 | child: Stack( 30 | // mainAxisAlignment: MainAxisAlignment.center, 31 | // crossAxisAlignment: CrossAxisAlignment.center, 32 | children: [ 33 | ClipRRect( 34 | borderRadius: BorderRadius.only( 35 | topLeft: Radius.circular(15.0), 36 | topRight: Radius.circular(15.0), 37 | bottomRight: Radius.circular(15.0), 38 | bottomLeft: Radius.circular(15.0)), 39 | child: Container( 40 | height: 250.0, 41 | width: MediaQuery.of(context).size.width / 1.029, 42 | color: Colors.amber, 43 | child:Image.asset('assets/10.jpg',fit: BoxFit.cover,width: MediaQuery.of(context).size.width,), 44 | ), 45 | ), 46 | // Padding( 47 | // padding: EdgeInsets.fromLTRB(0.0, 0.0, 0.0, 0.0), 48 | // ), 49 | Container( 50 | margin: EdgeInsets.fromLTRB(30.0, 120.0, 0.0, 0.0), 51 | padding: EdgeInsets.all(5.0), 52 | width: MediaQuery.of(context).size.width/1.2, 53 | color: Colors.white, 54 | child: ListView( 55 | children: [ 56 | Card(child: ListTile( 57 | title: Text('You can Registered Online from our official website.(bpsplayschool.com)',style: TextStyle(fontSize: 16.0,fontFamily: "Roboto")), 58 | ),), 59 | Card(child: ListTile( 60 | title: Text('Since the seats are limited you should hurry up! to get admission.'), 61 | ),), 62 | Card(child: ListTile( 63 | title: Text('Registered users must come with their registered slip and application form which you can get from our site ->Admission ->Application Form.'), 64 | ),), 65 | Card(child: ListTile( 66 | title: Text('For direct admission parents can contact to our administration office.'), 67 | ),), 68 | Card(child: ListTile( 69 | title: Text('Application form is available on our office.'), 70 | ),), 71 | Card(child: ListTile( 72 | title: Text('For any queries about admission you can contact us from our email and through our mobile contact number which is given below.'), 73 | ),), 74 | 75 | Padding( 76 | padding: EdgeInsets.fromLTRB(0.0, 0.0, 0.0, 5.0), 77 | ), 78 | ClipRRect( 79 | borderRadius: BorderRadius.only( 80 | topLeft: Radius.circular(15.0), 81 | topRight: Radius.circular(15.0), 82 | bottomRight: Radius.circular(15.0), 83 | bottomLeft: Radius.circular(15.0)), 84 | child: Container( 85 | height: 50.0, 86 | width: MediaQuery.of(context).size.width / 1.029, 87 | color: Colors.amber, 88 | child: Center( 89 | child: Text( 90 | 'Documents Required', 91 | style: TextStyle(fontSize: 20.0, color: Colors.white), 92 | )), 93 | ), 94 | ), 95 | Padding( 96 | padding: EdgeInsets.fromLTRB(0.0, 8.0, 0.0, 0.0), 97 | ), 98 | Card(child: ListTile( 99 | title: Text('For Online registered user they should bring the application form and registration slip.'), 100 | ),), 101 | Card(child: ListTile( 102 | title: Text('For direct admission from will be available on office'), 103 | ),), 104 | Card(child: ListTile( 105 | title: Text('Parents must bring their AADHAAR CARD.'), 106 | ),), 107 | Card(child: ListTile( 108 | title: Text('Two Passport size of children is required.'), 109 | ),), 110 | Card(child: ListTile( 111 | title: Text('Parents must come with their children and parents also.'), 112 | ),), 113 | Card(child: ListTile( 114 | title: Text('ADMISSSION FEE will collected during form submission.'), 115 | ),), 116 | Card(child: ListTile( 117 | title: Text('You can get fee detail from our office.'), 118 | ),), 119 | Card(child: ListTile( 120 | title: Text('All the mandetory documents like TC and character certificate is required for admission above the nursery.'), 121 | ),), 122 | 123 | Center( 124 | child: RaisedButton( 125 | onPressed: () { 126 | Navigator.push( 127 | context, 128 | MaterialPageRoute( 129 | builder: (context) => WebviewScaffold( 130 | appBar: AppBar( 131 | title: Text("BPS PLAY SCHOOL"), 132 | ), 133 | url: 134 | 'https://example.com/applicationform.php', 135 | scrollBar: true, 136 | withZoom: true, 137 | withLocalStorage: true, 138 | hidden: true, 139 | initialChild: Container( 140 | color: Colors.white, 141 | child: const Center( 142 | child: Text('Loading..',style: TextStyle(fontFamily: "Roboto",fontWeight: FontWeight.bold),), 143 | ), 144 | ), 145 | ))); 146 | 147 | }, 148 | child: Text( 149 | 'Apply Now', 150 | style: TextStyle(fontSize: 20.0,color: Colors.white,fontFamily: "Roboto"), 151 | ), 152 | color: Colors.red, 153 | clipBehavior: Clip.antiAlias, 154 | ), 155 | ) 156 | ], 157 | ), 158 | ) 159 | ], 160 | ), 161 | 162 | ), 163 | ); 164 | } 165 | } 166 | -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://www.dartlang.org/tools/pub/glossary#lockfile 3 | packages: 4 | async: 5 | dependency: transitive 6 | description: 7 | name: async 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "2.1.0" 11 | boolean_selector: 12 | dependency: transitive 13 | description: 14 | name: boolean_selector 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "1.0.4" 18 | bottom_navy_bar: 19 | dependency: "direct main" 20 | description: 21 | name: bottom_navy_bar 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "3.0.0" 25 | carousel_slider: 26 | dependency: "direct main" 27 | description: 28 | name: carousel_slider 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "1.3.0" 32 | charcode: 33 | dependency: transitive 34 | description: 35 | name: charcode 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "1.1.2" 39 | collection: 40 | dependency: transitive 41 | description: 42 | name: collection 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "1.14.11" 46 | convert: 47 | dependency: transitive 48 | description: 49 | name: convert 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "2.1.1" 53 | crypto: 54 | dependency: transitive 55 | description: 56 | name: crypto 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "2.0.6" 60 | cupertino_icons: 61 | dependency: "direct main" 62 | description: 63 | name: cupertino_icons 64 | url: "https://pub.dartlang.org" 65 | source: hosted 66 | version: "0.1.2" 67 | flutter: 68 | dependency: "direct main" 69 | description: flutter 70 | source: sdk 71 | version: "0.0.0" 72 | flutter_advanced_networkimage: 73 | dependency: transitive 74 | description: 75 | name: flutter_advanced_networkimage 76 | url: "https://pub.dartlang.org" 77 | source: hosted 78 | version: "0.4.15" 79 | flutter_cache_manager: 80 | dependency: transitive 81 | description: 82 | name: flutter_cache_manager 83 | url: "https://pub.dartlang.org" 84 | source: hosted 85 | version: "0.3.2" 86 | flutter_inappbrowser: 87 | dependency: "direct main" 88 | description: 89 | name: flutter_inappbrowser 90 | url: "https://pub.dartlang.org" 91 | source: hosted 92 | version: "1.2.0" 93 | flutter_plugin_pdf_viewer: 94 | dependency: "direct main" 95 | description: 96 | name: flutter_plugin_pdf_viewer 97 | url: "https://pub.dartlang.org" 98 | source: hosted 99 | version: "1.0.6" 100 | flutter_svg: 101 | dependency: transitive 102 | description: 103 | name: flutter_svg 104 | url: "https://pub.dartlang.org" 105 | source: hosted 106 | version: "0.12.4+1" 107 | flutter_test: 108 | dependency: "direct dev" 109 | description: flutter 110 | source: sdk 111 | version: "0.0.0" 112 | flutter_webview_plugin: 113 | dependency: "direct main" 114 | description: 115 | name: flutter_webview_plugin 116 | url: "https://pub.dartlang.org" 117 | source: hosted 118 | version: "0.3.4" 119 | google_maps_flutter: 120 | dependency: "direct main" 121 | description: 122 | name: google_maps_flutter 123 | url: "https://pub.dartlang.org" 124 | source: hosted 125 | version: "0.5.16" 126 | http: 127 | dependency: "direct main" 128 | description: 129 | name: http 130 | url: "https://pub.dartlang.org" 131 | source: hosted 132 | version: "0.12.0+2" 133 | http_parser: 134 | dependency: transitive 135 | description: 136 | name: http_parser 137 | url: "https://pub.dartlang.org" 138 | source: hosted 139 | version: "3.1.3" 140 | infinite_listview: 141 | dependency: transitive 142 | description: 143 | name: infinite_listview 144 | url: "https://pub.dartlang.org" 145 | source: hosted 146 | version: "1.0.0" 147 | matcher: 148 | dependency: transitive 149 | description: 150 | name: matcher 151 | url: "https://pub.dartlang.org" 152 | source: hosted 153 | version: "0.12.5" 154 | meta: 155 | dependency: transitive 156 | description: 157 | name: meta 158 | url: "https://pub.dartlang.org" 159 | source: hosted 160 | version: "1.1.6" 161 | mime: 162 | dependency: transitive 163 | description: 164 | name: mime 165 | url: "https://pub.dartlang.org" 166 | source: hosted 167 | version: "0.9.6+2" 168 | numberpicker: 169 | dependency: transitive 170 | description: 171 | name: numberpicker 172 | url: "https://pub.dartlang.org" 173 | source: hosted 174 | version: "1.0.0" 175 | path: 176 | dependency: transitive 177 | description: 178 | name: path 179 | url: "https://pub.dartlang.org" 180 | source: hosted 181 | version: "1.6.2" 182 | path_drawing: 183 | dependency: transitive 184 | description: 185 | name: path_drawing 186 | url: "https://pub.dartlang.org" 187 | source: hosted 188 | version: "0.4.1" 189 | path_parsing: 190 | dependency: transitive 191 | description: 192 | name: path_parsing 193 | url: "https://pub.dartlang.org" 194 | source: hosted 195 | version: "0.1.4" 196 | path_provider: 197 | dependency: "direct main" 198 | description: 199 | name: path_provider 200 | url: "https://pub.dartlang.org" 201 | source: hosted 202 | version: "0.5.0+1" 203 | pedantic: 204 | dependency: transitive 205 | description: 206 | name: pedantic 207 | url: "https://pub.dartlang.org" 208 | source: hosted 209 | version: "1.5.0" 210 | petitparser: 211 | dependency: transitive 212 | description: 213 | name: petitparser 214 | url: "https://pub.dartlang.org" 215 | source: hosted 216 | version: "2.2.1" 217 | quiver: 218 | dependency: transitive 219 | description: 220 | name: quiver 221 | url: "https://pub.dartlang.org" 222 | source: hosted 223 | version: "2.0.2" 224 | rxdart: 225 | dependency: transitive 226 | description: 227 | name: rxdart 228 | url: "https://pub.dartlang.org" 229 | source: hosted 230 | version: "0.21.0" 231 | sky_engine: 232 | dependency: transitive 233 | description: flutter 234 | source: sdk 235 | version: "0.0.99" 236 | source_span: 237 | dependency: transitive 238 | description: 239 | name: source_span 240 | url: "https://pub.dartlang.org" 241 | source: hosted 242 | version: "1.5.5" 243 | sqflite: 244 | dependency: transitive 245 | description: 246 | name: sqflite 247 | url: "https://pub.dartlang.org" 248 | source: hosted 249 | version: "1.1.5" 250 | stack_trace: 251 | dependency: transitive 252 | description: 253 | name: stack_trace 254 | url: "https://pub.dartlang.org" 255 | source: hosted 256 | version: "1.9.3" 257 | stream_channel: 258 | dependency: transitive 259 | description: 260 | name: stream_channel 261 | url: "https://pub.dartlang.org" 262 | source: hosted 263 | version: "2.0.0" 264 | string_scanner: 265 | dependency: transitive 266 | description: 267 | name: string_scanner 268 | url: "https://pub.dartlang.org" 269 | source: hosted 270 | version: "1.0.4" 271 | synchronized: 272 | dependency: transitive 273 | description: 274 | name: synchronized 275 | url: "https://pub.dartlang.org" 276 | source: hosted 277 | version: "2.1.0" 278 | term_glyph: 279 | dependency: transitive 280 | description: 281 | name: term_glyph 282 | url: "https://pub.dartlang.org" 283 | source: hosted 284 | version: "1.1.0" 285 | test_api: 286 | dependency: transitive 287 | description: 288 | name: test_api 289 | url: "https://pub.dartlang.org" 290 | source: hosted 291 | version: "0.2.4" 292 | typed_data: 293 | dependency: transitive 294 | description: 295 | name: typed_data 296 | url: "https://pub.dartlang.org" 297 | source: hosted 298 | version: "1.1.6" 299 | url_launcher: 300 | dependency: "direct main" 301 | description: 302 | name: url_launcher 303 | url: "https://pub.dartlang.org" 304 | source: hosted 305 | version: "5.0.3" 306 | uuid: 307 | dependency: transitive 308 | description: 309 | name: uuid 310 | url: "https://pub.dartlang.org" 311 | source: hosted 312 | version: "2.0.1" 313 | vector_math: 314 | dependency: transitive 315 | description: 316 | name: vector_math 317 | url: "https://pub.dartlang.org" 318 | source: hosted 319 | version: "2.0.8" 320 | xml: 321 | dependency: transitive 322 | description: 323 | name: xml 324 | url: "https://pub.dartlang.org" 325 | source: hosted 326 | version: "3.4.1" 327 | sdks: 328 | dart: ">=2.2.0 <3.0.0" 329 | flutter: ">=1.5.0 <2.0.0" 330 | -------------------------------------------------------------------------------- /lib/home.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:carousel_slider/carousel_slider.dart'; 4 | import 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; 5 | import 'package:school/school/about.dart'; 6 | import 'package:school/school/admission.dart'; 7 | import 'package:school/school/contact.dart'; 8 | import 'package:http/http.dart' as http; 9 | import 'package:flutter/animation.dart'; 10 | import 'package:url_launcher/url_launcher.dart'; 11 | 12 | var green = Color(0xFF4caf6a); 13 | var greenLight = Color(0xFFd8ebde); 14 | 15 | var red = Color(0xFFf36169); 16 | var redLight = Color(0xFFf2dcdf); 17 | 18 | var blue = Color(0xFF398bcf); 19 | var blueLight = Color(0xFFc1dbee); 20 | 21 | final List imgList = [ 22 | 'assets/8.jpg', 23 | 'assets/6.jpg', 24 | 'assets/4.JPG', 25 | 'assets/5.jpg', 26 | 'assets/9.jpg' 27 | ]; 28 | 29 | final List child = map( 30 | imgList, 31 | (index, i) { 32 | return Container( 33 | margin: EdgeInsets.all(5.0), 34 | child: ClipRRect( 35 | borderRadius: BorderRadius.all(Radius.circular(5.0)), 36 | child: Stack(children: [ 37 | Image.asset(i, fit: BoxFit.cover, width: 1000.0), 38 | Positioned( 39 | bottom: 0.0, 40 | left: 0.0, 41 | right: 0.0, 42 | child: Container( 43 | decoration: BoxDecoration( 44 | gradient: LinearGradient( 45 | colors: [ 46 | Color.fromARGB(200, 0, 0, 0), 47 | Color.fromARGB(0, 0, 0, 0) 48 | ], 49 | begin: Alignment.bottomCenter, 50 | end: Alignment.topCenter, 51 | ), 52 | ), 53 | padding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), 54 | child: Text( 55 | 'BPS PLAY SCHOOL', 56 | style: TextStyle( 57 | color: Colors.white, 58 | fontSize: 20.0, 59 | fontWeight: FontWeight.bold, 60 | ), 61 | ), 62 | ), 63 | ), 64 | ]), 65 | ), 66 | ); 67 | }, 68 | ).toList(); 69 | 70 | List map(List list, Function handler) { 71 | List result = []; 72 | for (var i = 0; i < list.length; i++) { 73 | result.add(handler(i, list[i])); 74 | } 75 | 76 | return result; 77 | } 78 | 79 | class Home extends StatefulWidget { 80 | @override 81 | _HomeState createState() => _HomeState(); 82 | } 83 | 84 | class _HomeState extends State with SingleTickerProviderStateMixin { 85 | ScrollController scrollCtrl = new ScrollController(); 86 | AnimationController animateCtrl; 87 | Choice _selectedChoice = choices[0]; 88 | int _current = 0; 89 | //Demo notice 90 | //Local Json Data 91 | String demoNotice = 92 | '{"tags": [{"name": "School closed", "date": "16/05/2021"}, {"name": "Lockdown", "date": "25/03/2020"}, {"name": "Result Published", "date": "8/02/2020"}]}'; 93 | 94 | List notices; 95 | final flutterWebviewPlugin = FlutterWebviewPlugin(); 96 | //Future Notice Start// 97 | @override 98 | void initState() { 99 | this.getNotice(); 100 | 101 | double offset = 0.0; 102 | animateCtrl = 103 | new AnimationController(vsync: this, duration: Duration(seconds: 6)) 104 | ..addListener(() { 105 | if (scrollCtrl.hasClients) { 106 | if (animateCtrl.isCompleted) animateCtrl.repeat(); 107 | offset += 1.0; 108 | if (offset - 1 > scrollCtrl.offset) { 109 | offset = 0.0; 110 | } 111 | setState(() { 112 | scrollCtrl.jumpTo(offset); 113 | }); 114 | } 115 | }); 116 | animateCtrl.forward(); 117 | super.initState(); 118 | 119 | flutterWebviewPlugin.close(); 120 | flutterWebviewPlugin.onUrlChanged.listen((String url) {}); 121 | } 122 | 123 | Future getNotice() async { 124 | var data = json.decode(demoNotice); 125 | //print(data['result'][0]['date']); 126 | 127 | if (!mounted) return; 128 | setState(() { 129 | notices = data['tags']; 130 | }); 131 | //do your stuff here req and decode the response 132 | } 133 | 134 | @override 135 | void dispose() { 136 | animateCtrl.dispose(); 137 | super.dispose(); 138 | flutterWebviewPlugin.dispose(); 139 | } 140 | 141 | //Future Notice End// 142 | void _select(Choice choice) { 143 | // Causes the app to rebuild with the new _selectedChoice. 144 | _launchURL(); 145 | } 146 | 147 | canLaunch(String url) { 148 | if (url.length > 0) 149 | return true; 150 | else 151 | return false; 152 | } 153 | 154 | _launchURL() async { 155 | const url = 'https://example.com/privacy_policy.php'; 156 | if (await canLaunch(url)) { 157 | await launch(url); 158 | } else { 159 | throw 'Could not launch $url'; 160 | } 161 | } 162 | 163 | @override 164 | Widget build(BuildContext context) { 165 | return Scaffold( 166 | backgroundColor: Colors.white, 167 | appBar: AppBar( 168 | leading: Image.asset('assets/bps.png'), 169 | title: Text('BPS Play School'), 170 | actions: [ 171 | // action button 172 | 173 | // overflow menu 174 | PopupMenuButton( 175 | onSelected: _select, 176 | itemBuilder: (BuildContext context) { 177 | return choices.map((Choice choice) { 178 | return PopupMenuItem( 179 | value: choice, 180 | child: Text(choice.title), 181 | ); 182 | }).toList(); 183 | }, 184 | ), 185 | ], 186 | elevation: 2.0, 187 | backgroundColor: Color.fromARGB(255, 255, 0, 0), 188 | ), 189 | body: Column( 190 | mainAxisSize: MainAxisSize.min, 191 | children: [ 192 | Stack(children: [ 193 | CarouselSlider( 194 | items: child, 195 | options: CarouselOptions( 196 | aspectRatio: 2.0, 197 | autoPlay: true, 198 | onPageChanged: (index, reason) { 199 | setState(() { 200 | _current = index; 201 | }); 202 | }, 203 | ), 204 | ), 205 | Positioned( 206 | top: 150.0, 207 | left: 0.0, 208 | right: 0.0, 209 | child: Row( 210 | mainAxisAlignment: MainAxisAlignment.center, 211 | children: map(imgList, (index, url) { 212 | return Container( 213 | width: 8.0, 214 | height: 8.0, 215 | margin: 216 | EdgeInsets.symmetric(vertical: 10.0, horizontal: 2.0), 217 | decoration: BoxDecoration( 218 | shape: BoxShape.circle, 219 | color: _current == index 220 | ? Color.fromRGBO(0, 0, 0, 0.9) 221 | : Color.fromRGBO(0, 0, 0, 0.4)), 222 | ); 223 | }), 224 | )) 225 | ]), 226 | Padding( 227 | padding: const EdgeInsets.symmetric(horizontal: 8.0), 228 | child: Wrap( 229 | spacing: 8.0, 230 | runSpacing: 8.0, 231 | direction: Axis.horizontal, 232 | children: [ 233 | ClipRRect( 234 | borderRadius: BorderRadius.only( 235 | topLeft: Radius.circular(15.0), 236 | topRight: Radius.circular(15.0), 237 | bottomRight: Radius.circular(15.0), 238 | ), 239 | child: Container( 240 | height: 92.0, 241 | width: 104.0, 242 | color: greenLight, 243 | child: InkWell( 244 | onTap: () { 245 | Navigator.push( 246 | context, 247 | MaterialPageRoute( 248 | builder: (context) => Admission())); 249 | }, 250 | child: Column( 251 | mainAxisAlignment: MainAxisAlignment.center, 252 | children: [ 253 | Icon( 254 | Icons.person, 255 | color: green, 256 | ), 257 | SizedBox( 258 | height: 4.0, 259 | ), 260 | Text( 261 | 'Admission', 262 | style: TextStyle( 263 | color: green, fontWeight: FontWeight.w500), 264 | ) 265 | ], 266 | ), 267 | ), 268 | ), 269 | ), 270 | ClipRRect( 271 | borderRadius: BorderRadius.only( 272 | topLeft: Radius.circular(15.0), 273 | topRight: Radius.circular(15.0), 274 | bottomRight: Radius.circular(15.0), 275 | ), 276 | child: Container( 277 | height: 92.0, 278 | width: 104.0, 279 | color: redLight, 280 | child: InkWell( 281 | onTap: () { 282 | Navigator.push(context, 283 | MaterialPageRoute(builder: (context) => About())); 284 | }, 285 | child: Column( 286 | mainAxisAlignment: MainAxisAlignment.center, 287 | children: [ 288 | Icon( 289 | Icons.school, 290 | color: red, 291 | ), 292 | SizedBox( 293 | height: 4.0, 294 | ), 295 | Text( 296 | 'About', 297 | style: TextStyle( 298 | color: red, fontWeight: FontWeight.w500), 299 | ) 300 | ], 301 | ), 302 | ), 303 | ), 304 | ), 305 | ClipRRect( 306 | borderRadius: BorderRadius.only( 307 | topLeft: Radius.circular(15.0), 308 | topRight: Radius.circular(15.0), 309 | bottomRight: Radius.circular(15.0), 310 | ), 311 | child: Container( 312 | height: 92.0, 313 | width: 104.0, 314 | color: blueLight, 315 | child: InkWell( 316 | onTap: () { 317 | Navigator.push(context, 318 | MaterialPageRoute(builder: (context) => Contact())); 319 | }, 320 | child: Column( 321 | mainAxisAlignment: MainAxisAlignment.center, 322 | children: [ 323 | Icon( 324 | Icons.contact_phone, 325 | color: blue, 326 | ), 327 | SizedBox( 328 | height: 4.0, 329 | ), 330 | Text( 331 | 'Contact', 332 | style: TextStyle( 333 | color: blue, fontWeight: FontWeight.w500), 334 | ) 335 | ], 336 | ), 337 | ), 338 | ), 339 | ), 340 | ], 341 | ), 342 | ), 343 | Padding( 344 | padding: EdgeInsets.all(2.0), 345 | ), 346 | ClipRRect( 347 | borderRadius: BorderRadius.only( 348 | topLeft: Radius.circular(15.0), 349 | topRight: Radius.circular(15.0), 350 | bottomRight: Radius.circular(15.0), 351 | bottomLeft: Radius.circular(15.0)), 352 | child: Container( 353 | height: 50.0, 354 | width: MediaQuery.of(context).size.width / 1.029, 355 | color: Colors.amber, 356 | child: Center( 357 | child: Text( 358 | 'Notice Board', 359 | style: TextStyle(fontSize: 18.0, color: Colors.white), 360 | )), 361 | ), 362 | ), 363 | Expanded( 364 | child: notices == null 365 | ? Center(child: Text('0 Notice Available')) 366 | : ListView.builder( 367 | itemCount: notices == null ? 0 : notices.length, 368 | //itemCount: 3, 369 | itemBuilder: (BuildContext context, int index) { 370 | return Card( 371 | clipBehavior: Clip.hardEdge, 372 | child: ListTile( 373 | leading: Icon(Icons.av_timer), 374 | title: Text( 375 | notices[index]['name'], 376 | style: TextStyle(fontStyle: FontStyle.italic), 377 | ), 378 | subtitle: 379 | Text('Posted On: ' + notices[index]['date']), 380 | ), 381 | ); 382 | }, 383 | ), 384 | ), 385 | ], 386 | ), 387 | ); 388 | } 389 | } 390 | 391 | class Choice { 392 | const Choice({this.title, this.icon}); 393 | 394 | final String title; 395 | final IconData icon; 396 | } 397 | 398 | const List choices = const [ 399 | const Choice(title: 'Privacy Policy', icon: Icons.security), 400 | ]; 401 | -------------------------------------------------------------------------------- /lib/student.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; 3 | import 'package:school/home.dart' ; 4 | import 'package:flutter_inappbrowser/flutter_inappbrowser.dart'; 5 | import 'package:school/updates.dart'; 6 | 7 | 8 | 9 | var green = Color(0xFF4caf6a); 10 | var greenLight = Color(0xFFd8ebde); 11 | 12 | var red = Color(0xFFf36169); 13 | var redLight = Color(0xFFf2dcdf); 14 | 15 | var blue = Color(0xFF398bcf); 16 | var blueLight = Color(0xFFc1dbee); 17 | 18 | class Student extends StatefulWidget { 19 | @override 20 | _StudentState createState() => _StudentState(); 21 | } 22 | 23 | class _StudentState extends State { 24 | final flutterWebviewPlugin = new FlutterWebviewPlugin(); 25 | 26 | @override 27 | void initState() { 28 | super.initState(); 29 | flutterWebviewPlugin.close(); 30 | flutterWebviewPlugin.onUrlChanged.listen((String url) { 31 | 32 | }); 33 | } 34 | 35 | @override 36 | void dispose() { 37 | super.dispose(); 38 | flutterWebviewPlugin.dispose(); 39 | } 40 | 41 | @override 42 | Widget build(BuildContext context) { 43 | return Scaffold( 44 | appBar: AppBar( 45 | title: Text('Student'), 46 | elevation: 2.0, 47 | backgroundColor: Color.fromARGB(255, 0, 191, 255), 48 | ), 49 | body: Column( 50 | children: [ 51 | Image.asset( 52 | 'assets/1.jpg', 53 | width: MediaQuery.of(context).size.width, 54 | ), 55 | Padding( 56 | padding: EdgeInsets.fromLTRB(0.0, 10.0, 0.0, 0.0), 57 | ), 58 | Padding( 59 | padding: const EdgeInsets.symmetric(horizontal: 8.0), 60 | child: Wrap( 61 | spacing: 8.0, 62 | runSpacing: 8.0, 63 | direction: Axis.horizontal, 64 | children: [ 65 | ClipRRect( 66 | borderRadius: BorderRadius.only( 67 | topLeft: Radius.circular(15.0), 68 | topRight: Radius.circular(15.0), 69 | bottomRight: Radius.circular(15.0), 70 | ), 71 | child: Container( 72 | height: 92.0, 73 | width: 104.0, 74 | color: greenLight, 75 | child: InkWell( 76 | onTap: () { 77 | Navigator.push( 78 | context, 79 | MaterialPageRoute( 80 | builder: (context) => InAppWebView( 81 | initialUrl: 'http://result.bpsplayschool.com/find-result.php', 82 | initialOptions: { 83 | "javaScriptEnabled":true, 84 | "transparentBackground":true, 85 | "useWideViewPort":true, 86 | "displayZoomControls":true, 87 | 88 | }, 89 | ))); 90 | }, 91 | child: Column( 92 | mainAxisAlignment: MainAxisAlignment.center, 93 | children: [ 94 | Icon( 95 | Icons.person, 96 | color: green, 97 | ), 98 | SizedBox( 99 | height: 4.0, 100 | ), 101 | Text( 102 | 'Result', 103 | style: TextStyle( 104 | color: green, fontWeight: FontWeight.w500), 105 | ) 106 | ], 107 | ), 108 | ), 109 | ), 110 | ), 111 | ClipRRect( 112 | borderRadius: BorderRadius.only( 113 | topLeft: Radius.circular(15.0), 114 | topRight: Radius.circular(15.0), 115 | bottomRight: Radius.circular(15.0), 116 | ), 117 | child: Container( 118 | height: 92.0, 119 | width: 104.0, 120 | color: redLight, 121 | child: InkWell( 122 | onTap: () { 123 | Navigator.push(context, 124 | MaterialPageRoute(builder: (context) => Home())); 125 | }, 126 | child: Column( 127 | mainAxisAlignment: MainAxisAlignment.center, 128 | children: [ 129 | Icon( 130 | Icons.timelapse, 131 | color: red, 132 | ), 133 | SizedBox( 134 | height: 4.0, 135 | ), 136 | Text( 137 | 'Notice', 138 | style: TextStyle( 139 | color: red, fontWeight: FontWeight.w500), 140 | ) 141 | ], 142 | ), 143 | ), 144 | ), 145 | ), 146 | ClipRRect( 147 | borderRadius: BorderRadius.only( 148 | topLeft: Radius.circular(15.0), 149 | topRight: Radius.circular(15.0), 150 | bottomRight: Radius.circular(15.0), 151 | ), 152 | child: Container( 153 | height: 92.0, 154 | width: 104.0, 155 | color: greenLight, 156 | child: InkWell( 157 | onTap: () { 158 | Navigator.push(context, 159 | MaterialPageRoute(builder: (context) => Updates())); 160 | }, 161 | child: Column( 162 | mainAxisAlignment: MainAxisAlignment.center, 163 | children: [ 164 | Icon( 165 | Icons.update, 166 | color: green, 167 | ), 168 | SizedBox( 169 | height: 4.0, 170 | ), 171 | Text( 172 | 'Update', 173 | style: TextStyle( 174 | color: green, fontWeight: FontWeight.w500), 175 | ) 176 | ], 177 | ), 178 | ), 179 | ), 180 | ), 181 | ClipRRect( 182 | borderRadius: BorderRadius.only( 183 | topLeft: Radius.circular(15.0), 184 | topRight: Radius.circular(15.0), 185 | bottomRight: Radius.circular(15.0), 186 | ), 187 | child: Container( 188 | height: 92.0, 189 | width: 104.0, 190 | color: greenLight, 191 | child: InkWell( 192 | onTap: () { 193 | Navigator.push( 194 | context, 195 | MaterialPageRoute( 196 | builder: (context) => InAppWebView( 197 | initialUrl: 'http://result.bpsplayschool.com/find-syllabus.php', 198 | initialOptions: { 199 | "javaScriptEnabled":true, 200 | "transparentBackground":true, 201 | "useWideViewPort":true, 202 | "displayZoomControls":true, 203 | 204 | }, 205 | ))); 206 | }, 207 | child: Column( 208 | mainAxisAlignment: MainAxisAlignment.center, 209 | children: [ 210 | Icon( 211 | Icons.library_books, 212 | color: green, 213 | ), 214 | SizedBox( 215 | height: 4.0, 216 | ), 217 | Text( 218 | 'Syllabus', 219 | style: TextStyle( 220 | color: green, fontWeight: FontWeight.w500), 221 | ) 222 | ], 223 | ), 224 | ), 225 | ), 226 | ), 227 | ClipRRect( 228 | borderRadius: BorderRadius.only( 229 | topLeft: Radius.circular(15.0), 230 | topRight: Radius.circular(15.0), 231 | bottomRight: Radius.circular(15.0), 232 | ), 233 | child: Container( 234 | height: 92.0, 235 | width: 104.0, 236 | color: redLight, 237 | child: InkWell( 238 | onTap: () { 239 | Navigator.push( 240 | context, 241 | MaterialPageRoute( 242 | builder: (context) => InAppWebView( 243 | initialUrl: 'http://result.bpsplayschool.com/find-routine.php', 244 | initialOptions: { 245 | "javaScriptEnabled":true, 246 | "transparentBackground":true, 247 | "useWideViewPort":true, 248 | "displayZoomControls":true, 249 | 250 | }, 251 | ))); 252 | }, 253 | child: Column( 254 | mainAxisAlignment: MainAxisAlignment.center, 255 | children: [ 256 | Icon( 257 | Icons.book, 258 | color: red, 259 | ), 260 | SizedBox( 261 | height: 4.0, 262 | ), 263 | Text( 264 | 'Routine', 265 | style: TextStyle( 266 | color: red, fontWeight: FontWeight.w500), 267 | ) 268 | ], 269 | ), 270 | ), 271 | ), 272 | ), 273 | ClipRRect( 274 | borderRadius: BorderRadius.only( 275 | topLeft: Radius.circular(15.0), 276 | topRight: Radius.circular(15.0), 277 | bottomRight: Radius.circular(15.0), 278 | ), 279 | child: Container( 280 | height: 92.0, 281 | width: 104.0, 282 | color: greenLight, 283 | child: InkWell( 284 | onTap: () { 285 | Navigator.push(context, 286 | MaterialPageRoute(builder: (context) => Home())); 287 | }, 288 | child: Column( 289 | mainAxisAlignment: MainAxisAlignment.center, 290 | children: [ 291 | Icon( 292 | Icons.person, 293 | color: green, 294 | ), 295 | SizedBox( 296 | height: 4.0, 297 | ), 298 | Text( 299 | 'Bus Track', 300 | style: TextStyle( 301 | color: green, fontWeight: FontWeight.w500), 302 | ) 303 | ], 304 | ), 305 | ), 306 | ), 307 | ), 308 | // ClipRRect( 309 | // borderRadius: BorderRadius.only( 310 | // topLeft: Radius.circular(15.0), 311 | // topRight: Radius.circular(15.0), 312 | // bottomRight: Radius.circular(15.0), 313 | // ), 314 | // child: Container( 315 | // height: 92.0, 316 | // width: 104.0, 317 | // color: blueLight, 318 | // child: InkWell( 319 | // onTap: () { 320 | // Scaffold.of(context).showSnackBar(SnackBar( 321 | // content: Text('Not Available'), 322 | // )); 323 | // }, 324 | // child: Column( 325 | // mainAxisAlignment: MainAxisAlignment.center, 326 | // children: [ 327 | // Icon( 328 | // Icons.check_circle, 329 | // color: blue, 330 | // ), 331 | // SizedBox( 332 | // height: 4.0, 333 | // ), 334 | // Text( 335 | // 'Attendance', 336 | // style: TextStyle( 337 | // color: blue, fontWeight: FontWeight.w500), 338 | // ) 339 | // ], 340 | // ), 341 | // ), 342 | // ), 343 | // ), 344 | ], 345 | ), 346 | ), 347 | ], 348 | )); 349 | } 350 | } 351 | --------------------------------------------------------------------------------