Mobile example app
This commit is contained in:
76
lib/mobile_example.dart
Normal file
76
lib/mobile_example.dart
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
import 'dart:math';
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:gymlink_module_web/main_mobile.dart';
|
||||||
|
import 'package:gymlink_module_web/providers/main.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
runApp(const MyExampleApp());
|
||||||
|
}
|
||||||
|
|
||||||
|
class MyExampleApp extends StatelessWidget {
|
||||||
|
const MyExampleApp({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return MaterialApp(
|
||||||
|
title: 'GymLink Example App',
|
||||||
|
debugShowCheckedModeBanner: false,
|
||||||
|
home: ChangeNotifierProvider(
|
||||||
|
create: (_) => ModuleMethods(),
|
||||||
|
child: Consumer<ModuleMethods>(
|
||||||
|
builder: (context, provider, __) => const ExamplePage(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ExamplePage extends StatefulWidget {
|
||||||
|
const ExamplePage({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<ExamplePage> createState() => _ExamplePageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _ExamplePageState extends State<ExamplePage> {
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
context.read<ModuleMethods>().onTokenReceived('token123');
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Consumer<ModuleMethods>(
|
||||||
|
builder: (context, provider, __) => Scaffold(
|
||||||
|
appBar: AppBar(title: const Text('GymLink Example App')),
|
||||||
|
body: Column(
|
||||||
|
children: [
|
||||||
|
const Text('test'),
|
||||||
|
IconButton(
|
||||||
|
icon: const Icon(Icons.abc),
|
||||||
|
onPressed: () {
|
||||||
|
provider.onTokenReceived('token123');
|
||||||
|
},
|
||||||
|
),
|
||||||
|
const Expanded(
|
||||||
|
child: MyApp(),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
const Text('Bottom text')
|
||||||
|
],
|
||||||
|
),
|
||||||
|
floatingActionButton: IconButton(
|
||||||
|
icon: const Icon(Icons.search),
|
||||||
|
onPressed: () {
|
||||||
|
provider.changeTheme(Random().nextInt(0xffffff + 1));
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
23
lib/providers/main.dart
Normal file
23
lib/providers/main.dart
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:gymlink_module_web/theme.dart';
|
||||||
|
|
||||||
|
class ModuleMethods with ChangeNotifier {
|
||||||
|
bool _isLoading = true;
|
||||||
|
bool get isLoading => _isLoading;
|
||||||
|
bool _blackTheme = false;
|
||||||
|
bool get blackTheme => _blackTheme;
|
||||||
|
ThemeData _theme = myTheme;
|
||||||
|
ThemeData get theme => _theme;
|
||||||
|
void onTokenReceived(String token) {
|
||||||
|
if (token == 'token123') {
|
||||||
|
_isLoading = false;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void changeTheme(int color) {
|
||||||
|
_blackTheme = !_blackTheme;
|
||||||
|
_theme = getThemeData(Color(color), _blackTheme);
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,35 +1,19 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gymlink_module_web/main_mobile.dart';
|
import 'package:gymlink_module_web/main_mobile.dart';
|
||||||
import 'package:gymlink_module_web/pages/main.dart';
|
import 'package:gymlink_module_web/pages/main.dart';
|
||||||
import 'package:gymlink_module_web/theme.dart';
|
import 'package:gymlink_module_web/providers/main.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class MyAppStateMobile extends State<MyApp> {
|
class MyAppStateMobile extends State<MyApp> {
|
||||||
bool _isLoading = false;
|
|
||||||
ThemeData theme = myTheme;
|
|
||||||
bool black_theme = false;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MaterialApp(
|
return Consumer<ModuleMethods>(
|
||||||
|
builder: (context, provider, __) => MaterialApp(
|
||||||
title: 'GymLink Module',
|
title: 'GymLink Module',
|
||||||
theme: theme,
|
theme: provider.theme,
|
||||||
debugShowCheckedModeBanner: false,
|
debugShowCheckedModeBanner: false,
|
||||||
home: MainPage(isLoading: _isLoading),
|
home: MainPage(isLoading: provider.isLoading),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void onTokenReceived(String token) {
|
|
||||||
if (token == 'token123') {
|
|
||||||
setState(() {
|
|
||||||
_isLoading = false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void changeColor(int color) {
|
|
||||||
setState(() {
|
|
||||||
black_theme = !black_theme; //FIXME: TEMPORARY
|
|
||||||
theme = getThemeData(Color(color), black_theme);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ dependencies:
|
|||||||
flutter_markdown: ^0.7.1
|
flutter_markdown: ^0.7.1
|
||||||
http: ^1.2.1
|
http: ^1.2.1
|
||||||
universal_html: ^2.2.4
|
universal_html: ^2.2.4
|
||||||
|
provider: ^6.1.2
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|||||||
Reference in New Issue
Block a user