Ahmed Fwela

Merge branch 'fix-router-outlet'

... ... @@ -71,9 +71,7 @@ class HomeView extends GetView<HomeController> {
shape: StadiumBorder(),
),
onPressed: () async {
final data =
await Get.rootDelegate.toNamed('/home/country');
print('DATA: $data');
await Get.rootDelegate.toNamed('/home/country');
},
child: Text(
'fetch_country'.tr,
... ...
import 'dart:async';
import 'package:get/get.dart';
import 'package:async/async.dart';
class SplashService extends GetxService {
final welcomeStr = ['GetX', 'Rules!'];
final activeStr = 0.obs;
final memo = AsyncMemoizer<void>();
Future<void> init() {
return memo.runOnce(_initFunction);
}
void _changeActiveString() {
activeStr.value = (activeStr.value + 1) % welcomeStr.length;
}
Future<void> _initFunction() async {
final t = Timer.periodic(
Duration(milliseconds: 500),
(t) => _changeActiveString(),
);
//simulate some long running operation
await Future.delayed(Duration(seconds: 5));
//cancel the timer once we are done
t.cancel();
}
}
... ...
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../controllers/splash_service.dart';
class SplashView extends GetView<SplashService> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Obx(
() => Text(
controller.welcomeStr[controller.activeStr.value],
style: TextStyle(fontSize: 20),
),
),
CircularProgressIndicator(),
],
),
),
);
}
}
... ...
import 'package:example_nav2/app/modules/splash/controllers/splash_service.dart';
import 'package:example_nav2/app/modules/splash/views/splash_view.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
... ... @@ -10,10 +12,23 @@ void main() {
title: "Application",
initialBinding: BindingsBuilder(
() {
Get.put(SplashService());
Get.put(AuthService());
},
),
getPages: AppPages.routes,
builder: (context, child) {
return FutureBuilder<void>(
key: ValueKey('initFuture'),
future: Get.find<SplashService>().init(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return child ?? SizedBox.shrink();
}
return SplashView();
},
);
},
// routeInformationParser: GetInformationParser(
// // initialRoute: Routes.HOME,
// ),
... ...
... ... @@ -2,8 +2,6 @@
// Generated file. Do not edit.
//
// clang-format off
#include "generated_plugin_registrant.h"
... ...
... ... @@ -2,8 +2,6 @@
// Generated file. Do not edit.
//
// clang-format off
#ifndef GENERATED_PLUGIN_REGISTRANT_
#define GENERATED_PLUGIN_REGISTRANT_
... ...
... ... @@ -56,5 +56,5 @@ class GetNavConfig extends RouteInformation {
@override
String toString() => '''
======GetNavConfig=====\ncurrentTreeBranch: $currentTreeBranch\ncurrentPage: $currentPage\n======GetNavConfig=====''';
======GetNavConfig=====\nlocation: $location\ncurrentTreeBranch: $currentTreeBranch\n======GetNavConfig=====''';
}
... ...
... ... @@ -311,7 +311,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
return route;
}
Future<T> toNamed<T>(
Future<void> toNamed(
String page, {
dynamic arguments,
Map<String, String>? parameters,
... ... @@ -324,10 +324,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
final decoder = Get.routeTree.matchRoute(page, arguments: arguments);
decoder.replaceArguments(arguments);
final completer = Completer<T>();
if (decoder.route != null) {
_allCompleters[decoder.route!] = completer;
await pushHistory(
GetNavConfig(
currentTreeBranch: decoder.treeBranch,
... ... @@ -335,8 +332,6 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
state: null, //TODO: persist state?
),
);
return completer.future;
} else {
///TODO: IMPLEMENT ROUTE NOT FOUND
... ... @@ -344,7 +339,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
}
}
Future<T?>? offAndToNamed<T>(
Future<void>? offAndToNamed(
String page, {
dynamic arguments,
int? id,
... ... @@ -361,13 +356,13 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
return toNamed(page, arguments: arguments, parameters: parameters);
}
Future<T> offNamed<T>(
Future<void> offNamed(
String page, {
dynamic arguments,
Map<String, String>? parameters,
}) async {
history.removeLast();
return toNamed<T>(page, arguments: arguments, parameters: parameters);
return toNamed(page, arguments: arguments, parameters: parameters);
}
/// Removes routes according to [PopMode]
... ... @@ -375,7 +370,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
/// DOES NOT remove the [fullRoute]
Future<void> backUntil(
String fullRoute, {
PopMode popMode = PopMode.Page,
PopMode popMode = PopMode.History,
}) async {
// remove history or page entries until you meet route
var iterator = currentConfiguration;
... ... @@ -406,7 +401,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
@override
Future<bool> popRoute({
Object? result,
PopMode popMode = PopMode.Page,
PopMode popMode = PopMode.History,
}) async {
//Returning false will cause the entire app to be popped.
final wasPopup = await handlePopupRoutes(result: result);
... ... @@ -420,8 +415,6 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
return false;
}
final _allCompleters = <GetPage, Completer>{};
bool _onPopVisualRoute(Route<dynamic> route, dynamic result) {
final didPop = route.didPop(result);
if (!didPop) {
... ... @@ -436,9 +429,6 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
if (config != null) {
_removeHistoryEntry(config);
}
if (_allCompleters.containsKey(settings)) {
_allCompleters[settings]?.complete(route.popped);
}
}
refresh();
... ... @@ -467,7 +457,7 @@ class GetNavigator extends Navigator {
}
return true;
},
onGenerateRoute: (RouteSettings settings) {
onGenerateRoute: (settings) {
final selectedPageList =
pages.where((element) => element.name == settings.name);
if (selectedPageList.isNotEmpty) {
... ...