Compare commits
2 Commits
d4fe94b8b9
...
33e372b330
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
33e372b330 | ||
|
|
fa8529fca0 |
25
.vscode/launch.json
vendored
Normal file
25
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "markettakers-flutter",
|
||||||
|
"request": "launch",
|
||||||
|
"type": "dart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "markettakers-flutter (profile mode)",
|
||||||
|
"request": "launch",
|
||||||
|
"type": "dart",
|
||||||
|
"flutterMode": "profile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "markettakers-flutter (release mode)",
|
||||||
|
"request": "launch",
|
||||||
|
"type": "dart",
|
||||||
|
"flutterMode": "release"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:markettakers/markettakers.dart';
|
import 'package:mtcore/markettakers.dart';
|
||||||
|
|
||||||
class SimpleStage extends StageFactory {
|
class SimpleStage extends StageFactory {
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -2,9 +2,14 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:rive_native/rive_native.dart';
|
import 'package:rive_native/rive_native.dart';
|
||||||
import 'package:talker_flutter/talker_flutter.dart';
|
import 'package:talker_flutter/talker_flutter.dart';
|
||||||
|
|
||||||
export 'package:markettakers/src/bootstrapper.dart'
|
export 'package:mtcore/src/bootstrapper.dart'
|
||||||
show Bootstrapper, StageFactory, StageController;
|
show Bootstrapper, StageFactory, StageController;
|
||||||
|
|
||||||
|
export 'package:mtcore/src/about_screen.dart' show AboutScreen;
|
||||||
|
export 'package:mtcore/src/loader.dart'
|
||||||
|
show Loader, LoaderFlavour, LoaderController;
|
||||||
|
export 'package:mtcore/src/credits.dart' show Credits;
|
||||||
|
|
||||||
final talker = Talker();
|
final talker = Talker();
|
||||||
|
|
||||||
final ThemeData commonTheme = ThemeData(
|
final ThemeData commonTheme = ThemeData(
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:markettakers/markettakers.dart';
|
import 'package:mtcore/markettakers.dart';
|
||||||
import 'package:markettakers/src/loaders/loader.dart';
|
import 'package:mtcore/src/credits.dart';
|
||||||
|
import 'package:mtcore/src/loader.dart';
|
||||||
import 'package:talker_flutter/talker_flutter.dart';
|
import 'package:talker_flutter/talker_flutter.dart';
|
||||||
|
|
||||||
class AboutScreen extends StatelessWidget {
|
class AboutScreen extends StatelessWidget {
|
||||||
@@ -54,41 +55,23 @@ class Footer extends StatelessWidget {
|
|||||||
|
|
||||||
final List<Widget> children;
|
final List<Widget> children;
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return FractionallySizedBox(
|
|
||||||
widthFactor: 0.5,
|
|
||||||
child: Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
OutlinedButton(
|
|
||||||
onPressed: () {
|
|
||||||
Navigator.of(context).push(
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (context) => TalkerScreen(talker: talker),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
child: const Text("View Logs"),
|
|
||||||
),
|
|
||||||
...children,
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Credits extends StatelessWidget {
|
|
||||||
const Credits({super.key});
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Row(
|
return Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
const Text("Made with "),
|
OutlinedButton(
|
||||||
const Icon(Icons.favorite, color: Colors.red),
|
onPressed: () {
|
||||||
const Text(" by Skipper, Clewerwild and karabyn2187"),
|
Navigator.of(context).push(
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => TalkerScreen(talker: talker),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: const Text("View Logs"),
|
||||||
|
),
|
||||||
|
...children,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import 'dart:async';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||||
import 'package:markettakers/markettakers.dart';
|
import 'package:mtcore/markettakers.dart';
|
||||||
import 'package:markettakers/src/loaders/loader.dart';
|
import 'package:mtcore/src/loader.dart';
|
||||||
import 'package:percent_indicator/circular_percent_indicator.dart';
|
import 'package:percent_indicator/circular_percent_indicator.dart';
|
||||||
|
|
||||||
part 'bootstrapper.freezed.dart';
|
part 'bootstrapper.freezed.dart';
|
||||||
@@ -75,8 +75,14 @@ class _BootstrapController extends Bloc<_BootstrapEvent, BootstrapState> {
|
|||||||
_BootstrapController(super.initialState, this.completer) {
|
_BootstrapController(super.initialState, this.completer) {
|
||||||
assert(state.stages.isNotEmpty, "Stages list cannot be empty");
|
assert(state.stages.isNotEmpty, "Stages list cannot be empty");
|
||||||
|
|
||||||
on<StartEvent>((event, emit) {
|
on<StartEvent>((event, emit) async {
|
||||||
talker.info("BootstrapController: Starting bootstrap process");
|
talker.info("BootstrapController: Starting bootstrap process");
|
||||||
|
|
||||||
|
if (await state.currentStage.isAlreadyCompleted) {
|
||||||
|
add(const _BootstrapEvent.stageCompleted());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final controller = launchCurrentStage(
|
final controller = launchCurrentStage(
|
||||||
state.stages,
|
state.stages,
|
||||||
state.currentStageIndex,
|
state.currentStageIndex,
|
||||||
@@ -94,21 +100,24 @@ class _BootstrapController extends Bloc<_BootstrapEvent, BootstrapState> {
|
|||||||
if (newState.areStagesCompleted) {
|
if (newState.areStagesCompleted) {
|
||||||
talker.info("BootstrapController: All stages completed");
|
talker.info("BootstrapController: All stages completed");
|
||||||
completer.complete();
|
completer.complete();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// skip already completed stages
|
// skip already completed stages
|
||||||
} else if (await newState.currentStage.isAlreadyCompleted) {
|
if (await newState.currentStage.isAlreadyCompleted) {
|
||||||
talker.info(
|
talker.info(
|
||||||
"BootstrapController: Stage ${newState.currentStage.title} already completed, skipping",
|
"BootstrapController: Stage ${newState.currentStage.title} already completed, skipping",
|
||||||
);
|
);
|
||||||
add(const _BootstrapEvent.stageCompleted());
|
|
||||||
|
|
||||||
// move to next stage
|
|
||||||
} else {
|
|
||||||
final nextStage = newState.currentStage;
|
|
||||||
talker.info("BootstrapController: Starting stage ${nextStage.title}");
|
|
||||||
launchCurrentStage(state.stages, nextIndex);
|
|
||||||
emit(newState);
|
emit(newState);
|
||||||
|
add(const _BootstrapEvent.stageCompleted());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// move to next stage
|
||||||
|
final nextStage = newState.currentStage;
|
||||||
|
talker.info("BootstrapController: Starting stage ${nextStage.title}");
|
||||||
|
launchCurrentStage(state.stages, nextIndex);
|
||||||
|
emit(newState);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
17
lib/src/credits.dart
Normal file
17
lib/src/credits.dart
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class Credits extends StatelessWidget {
|
||||||
|
const Credits({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
const Text("Made with "),
|
||||||
|
const Icon(Icons.favorite, color: Colors.red),
|
||||||
|
const Text(" by Skipper, Clewerwild and karabyn2187"),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -41,7 +41,7 @@ class Loader extends HookWidget {
|
|||||||
|
|
||||||
final animFile = useMemoized(
|
final animFile = useMemoized(
|
||||||
() =>
|
() =>
|
||||||
FileLoader.fromAsset("packages/markettakers/${flavour.filepath}", riveFactory: Factory.flutter),
|
FileLoader.fromAsset("packages/mtcore/${flavour.filepath}", riveFactory: Factory.flutter),
|
||||||
);
|
);
|
||||||
|
|
||||||
return RiveWidgetBuilder(
|
return RiveWidgetBuilder(
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
name: markettakers
|
name: mtcore
|
||||||
description: "MarketTakers library"
|
description: "MarketTakers shared/core library"
|
||||||
version: 1.0.2
|
version: 1.0.2
|
||||||
publish_to: https://gitea.tailc58da6.ts.net/api/packages/MarketTakers/pub/
|
publish_to: https://gitea.tailc58da6.ts.net/api/packages/MarketTakers/pub/
|
||||||
repository: https://gitea.tailc58da6.ts.net/MarketTakers/markettakers-flutter
|
repository: https://gitea.tailc58da6.ts.net/MarketTakers/markettakers-flutter
|
||||||
|
|||||||
Reference in New Issue
Block a user