From 5ba83212afc7ea716fe31c4e0a5c3b9bbcc0dd41 Mon Sep 17 00:00:00 2001 From: jyuesong <425698907@qq.com> Date: Tue, 18 Jan 2022 18:55:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=8E=B7=E5=8F=96provider?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 15 ++++++++++----- lib/utils/extension.dart | 10 ++++++++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 47771c6..4f0f32a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -32,7 +32,7 @@ void main() async { overrides: [ themeProvider, ], - child: const MyApp(), + child: const QlApp(), ), ); if (Platform.isAndroid) { @@ -41,11 +41,16 @@ void main() async { } } -class MyApp extends ConsumerWidget { - const MyApp({Key? key}) : super(key: key); +class QlApp extends ConsumerStatefulWidget { + const QlApp({Key? key}) : super(key: key); @override - Widget build(BuildContext context, WidgetRef ref) { + ConsumerState createState() => QlAppState(); +} + +class QlAppState extends ConsumerState { + @override + Widget build(BuildContext context) { return GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { @@ -64,7 +69,7 @@ class MyApp extends ConsumerWidget { if (!kReleaseMode) { showDebugBtn(context, btnColor: Colors.blue); } - return getIt().isLogined() ? const HomePage() : LoginPage(); + return getIt().isLogined() ? const HomePage() : const LoginPage(); }, ), // home: LoginPage(), diff --git a/lib/utils/extension.dart b/lib/utils/extension.dart index 8dab197..a447202 100644 --- a/lib/utils/extension.dart +++ b/lib/utils/extension.dart @@ -1,14 +1,20 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:fluttertoast/fluttertoast.dart'; +import 'package:qinglong_app/main.dart'; +//不推荐使用, 性能为o(n) extension ContextExt on BuildContext { + static QlAppState? _state; + T read(ProviderBase provider) { - return (this as WidgetRef).read(provider); + _state ??= findRootAncestorStateOfType(); + return _state!.ref.read(provider); } T watch(ProviderBase provider) { - return (this as WidgetRef).watch(provider); + _state ??= findRootAncestorStateOfType(); + return _state!.ref.watch(provider); } }