web_page.dart 1.83 KB
import 'package:appframe/bloc/web_cubit.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
import 'package:webview_flutter/webview_flutter.dart';

class WebPage extends StatelessWidget {
  const WebPage({super.key});

  @override
  Widget build(BuildContext context) {
    final Map<String, dynamic>? extraData = GoRouterState.of(context).extra as Map<String, dynamic>?;

    print("接收到的参数: $extraData");
    var sessionCode = extraData?['sessionCode'];
    var userCode = extraData?['userCode'];
    var classCode = extraData?['classCode'];
    var userType = extraData?['userType'];
    var stuId = extraData?['stuId'];

    print("sessionCode:$sessionCode");

    return BlocProvider(
      create: (context) =>
          WebCubit(WebState(false, '界面加载中...', false, sessionCode, userCode, classCode, userType, stuId)),
      child: BlocConsumer<WebCubit, WebState>(
        builder: (context, state) {
          return Scaffold(
            appBar: AppBar(title: Text(state.title)),
            body: state.loaded
                ? WebViewWidget(controller: context.read<WebCubit>().controller)
                : const Center(child: CircularProgressIndicator()),
            // 用于测试一下点击跳转路由
            floatingActionButton: FloatingActionButton(
              onPressed: () {
                context.read<WebCubit>().goAuth();
              },
              child: const Icon(Icons.add),
            ),
          );
        },
        listener: (context, state) {
          print("web page listener -------------------------");

          // 跳转到微信授权页面
          if (state.needAuth) {
            print("跳转到微信授权页面");
            context.go("/wechatAuth");
          }

        },
      ),
    );
  }
}