[過去ログ] Flutterやろうよ!!! 3 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
991(1): (ワッチョイ 417d-LN6m) 2022/03/23(水)00:45 ID:PKuC3Xpv0(1/3)調 AAS
final navigateRequestStateProvider =
ChangeNotifierProvider.autoDispose<NavigateRequestState>((ref) => NavigateRequestState());
class CustomNavigator {
/*
『Do not use BuildContexts across async gaps』を出さないために、
魔法を実行するNavigatorのラッパークラス
Notes:
NavigateRequestState.updateWith()をコールして、ページ遷移のリクエストを登録
NavigateRequestState.updateWith()のnotifyListeners()コール後に、refのWidgetが再buildされる
build後に、CustomNavigator._checkNavigateRequestが実行される
_checkNavigateRequestは、NavigateRequestStateにページ遷移のリクエストがあれば実行する
*/
final Key key;
final BuildContext context;
final WidgetRef ref;
NavigateRequestState? state;
CustomNavigator({required this.key, required this.context, required this.ref}) {
// 魔法
state = ref.watch(navigateRequestStateProvider);
WidgetsBinding.instance.addPostFrameCallback((_) => _checkNavigateRequest());
992: (ワッチョイ 417d-LN6m) 2022/03/23(水)00:45 ID:PKuC3Xpv0(2/3)調 AAS
自分はこんな感じで『Do not use BuildContexts across async gaps』を回避した
994: (ワッチョイ 417d-LN6m) 2022/03/23(水)18:18 ID:PKuC3Xpv0(3/3)調 AAS
import 'package:flutter/cupertino.dart';
class CustomNavigator {
static final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
static void pop() {
navigatorKey.currentState?.pop();
}
static void pushNamed({required String nextPagePath}) {
navigatorKey.currentState?.pushNamed(nextPagePath);
}
static void pushReplacementNamed({required String nextPagePath}) {
navigatorKey.currentState?.pushReplacementNamed(nextPagePath);
}
static void pushNamedAndRemoveUntil(
{required String nextPagePath, required routePagePath}) {
navigatorKey.currentState?.pushNamedAndRemoveUntil(nextPagePath, ModalRoute.withName(routePagePath));
}
}
160行の力作が20行に縮んだ…
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.032s