这段Flutter代码中闪屏相关的代码在哪里?

问题描述 投票:0回答:1

我正在通过修改flutter书中的示例源文件来创建一个webview应用程序。当你运行应用程序时,启动画面会打开,然后移动到网页视图,但没有与启动画面相关的注释或解释,所以我不知道代码在哪里。

代码在这里

main.dart

import 'package:ch_08/screen/home_screen.dart';
import 'package:flutter/material.dart';

void main() {
  // 플러터 프레임워크가 앱을 실행할 준비가 될때까지
  // 기다림
  WidgetsFlutterBinding.ensureInitialized();

  runApp(
    MaterialApp(
      debugShowCheckedModeBanner: false,
      home: HomeScreen(),
    ),
  );
}

home_screen.dart

import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:webview_flutter/webview_flutter.dart';


class HomeScreen extends StatefulWidget {
  //uri = 불러올 홈페이지 주소
  final uri = Uri.parse('https://google.com');

  HomeScreen({Key? key}) : super(key: key);

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  List<DateTime> clicked = [];

  final clickWaitTime = const Duration(seconds: 1);


  final controller = WebViewController()
    ..setJavaScriptMode(JavaScriptMode.unrestricted)
    ..setNavigationDelegate(NavigationDelegate(onPageFinished: (String url) {
    }));

  @override
  void initState() {
    controller.loadRequest(widget.uri);
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return PopScope(
      canPop: false,
      onPopInvoked: (didPop) {
        clicked.add(DateTime.now());

        //마지막 클릭이 마지막 클릭 1초 후인 경우.
        //카운터를 재설정하려면 목록을 지웁니다.
        if (clicked.length > 1 &&
            clicked[clicked.length - 1]
                .difference(clicked[clicked.length - 2]) >
                clickWaitTime) {
          clicked.removeAt(clicked.length - 2);
        }

        //목록의 모든 클릭이 "2회 이상" 클릭이고 총 3번의 클릭이 있는 경우
        //사용자가 세 번 클릭했음을 의미합니다.
        if (clicked.length == 3) {
          clicked.clear();
          SystemNavigator.pop();
          exit(0);
          return;
        }

        //사용자가 더 많은 클릭을 원하는지 확인하기 위해 1초 동안 기다립니다.
        Future.delayed(const Duration(seconds: 1), () {
          if (clicked.length == 1) {
            controller?.goBack();
          } else if (clicked.length == 2) {
            showMessage("뒤로가기를 3번 연속으로 누르면 종료됩니다.");
          }
          clicked.clear();
        });
      },
      child: Scaffold(
        body: SafeArea(
          child: WebViewWidget(controller: controller),
        ),
      ),
    );
  }

  void showMessage(String message) {
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(content: Text(message)),
    );
  }
}
flutter dart splash-screen
1个回答
0
投票

我自己解决了。如果您以前从未制作过启动画面,那么它可能不是您想要的。

我联系了这本书的作者并得到了答案。

基本上,当您在模拟器中运行应用程序时,Flutter 会在放大应用程序图标的同时运行应用程序图标。

如果需要,您可以使用 flutter_native_splash 包而不是默认设置来创建启动屏幕。

© www.soinside.com 2019 - 2024. All rights reserved.