我的第一个flutter项目(Android & Webview)

这篇具有很好参考价值的文章主要介绍了我的第一个flutter项目(Android & Webview)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:flutter开发环境搭建Flutter的开发环境搭建-图解_☆七年的博客-CSDN博客

第一个flutter简单项目,内容是一个主界面,其中:

    1.内容点击数字自增

    2.跳转一个空页,

    3.跳转一个WebView界面

其中涉及添加主键,新建界面类,导入依赖,使用WebView, 兼容http网络安全

我的第一个flutter项目(Android & Webview),flutter,android,Webview

 一、主界面 main.dart文件

import 'package:flutter/material.dart';

import 'package:flutterdemo/newpage.dart';

import 'package:flutterdemo/webviewExamlpe.dart';





void main() {

  runApp(const MyApp());

}





/// 这里我们的MyApp是一个类,继承了StatelessWidget

class MyApp extends StatelessWidget {

  const MyApp({super.key});





  /// 这个组件是这个app的根 这是一个无状态部件,然后实现构造方法,

  @override

  Widget build(BuildContext context) {

    ///构造方法里面通过MaterialApp()函数定义风格,然后是标题、主题和主页面信息,

    return MaterialApp(

      title: 'Flutter Demo',

      theme: ThemeData(

        ///这里有一个Colors.blue,你试一下改成red,或者green。

        ///如果你这时候项目是运行在模拟器 或者真机上的话,你可以修改后Ctrl + S 进行保存。就能同步展示

        colorScheme: ColorScheme.fromSeed(seedColor: Colors.green),

        useMaterial3: true,

      ),





      ///  这里主页面home中调用MyHomePage()函数,也就是我们当前页面所显示的内容。

      home: const MyHomePage(title: '主页'),

    );

  }

}





/// 这里MyHomePage继承StatefulWidget,

/// 这是一个有状态的部件,这里就需要一个状态了,

/// 通过createState()得到一个_MyHomePageState,

/// 这个_MyHomePageState()就是这个页面的主要内容了,它里面是

class MyHomePage extends StatefulWidget {

  const MyHomePage({super.key, required this.title});





  final String title;





  @override

  State<MyHomePage> createState() => _MyHomePageState();

}





class _MyHomePageState extends State<MyHomePage> {

  int _counter = 0;





  void _incrementCounter() {

    setState(() {

      _counter++;

    });

  }





  void _goToNewPage() {

    Navigator.push(

      context,

      MaterialPageRoute(builder: (context) => NewPage()),

    );

  }





  // 例如,在主页的某个按钮点击事件中进行页面跳转

  void _goToWebViewPage() {

    Navigator.push(

      context,

      MaterialPageRoute(builder: (context) => WebViewExample()),

    );

  }





  /// 在 build 方法中,我们通常通过对基础 Widget 进行相应的 UI 配置,或是组合各类基础 Widget 的方式进行 UI 的定制化。

  @override

  Widget build(BuildContext context) {

    ///这里返回一个Scaffold,这是一个脚手架,用来构建页面

    return Scaffold(

      ///然后我们看Scaffold中的内容,AppBar 是页面的导航栏,我们直接将 MyHomePage 中的 title 属性作为标题使用。

      appBar: AppBar(

        backgroundColor: Theme.of(context).colorScheme.inversePrimary,





        ///这里我们从App.build方法创建的MyHomePage对象中获取值,并使用它来设置appbar的标题。

        title: Text(widget.title),

      ),





      ///body 主题内容

      body: Center(

        child: Column(

          mainAxisAlignment: MainAxisAlignment.center,

          children: <Widget>[

            const Text(

              '你可以点击按钮增加数字:',

            ),

            Text(

              '$_counter',

              style: Theme.of(context).textTheme.headlineMedium,

            ),

            ///按钮,_incrementCounter 作为其点击处理函数,数字自增。

            ElevatedButton(

              onPressed: () {

                _incrementCounter();

              },

              // child: const Icon(Icons.add),

              child: const Icon(Icons.add),

            ),

            ///按钮。我们将  _goToNewPage 作为其点击处理函数,跳转空白页

            ElevatedButton(

              onPressed: () {

                _goToNewPage();

              },

              // child: const Icon(Icons.add),

              child: Text('click me ,go to newPage'),

            ),

          ],

        ),

      ),





      ///悬浮按钮,则是页面右下角的带“->”的悬浮按钮。我们将  _goToWebViewPager 作为其点击处理函数。

      floatingActionButton: FloatingActionButton(

        onPressed: _goToWebViewPage,

        tooltip: 'Go to New Page',

        child: const Icon(Icons.arrow_forward),

      ),

    );

  }

}



我的第一个flutter项目(Android & Webview),flutter,android,Webview
 

二、空页面 newpager.dart

import 'package:flutter/material.dart';

class NewPage extends StatelessWidget {

  const NewPage({super.key});





  @override

  Widget build(BuildContext context) {

    return Scaffold(

      appBar: AppBar(

        title: const Text('New Page'),

      ),

      body: const Center(

        child: Text(

          'This is a new page!',

          style: TextStyle(fontSize: 20),

        ),

      ),

    );

  }

}



我的第一个flutter项目(Android & Webview),flutter,android,Webview

三、Webview界面 webViewExample.dart

import 'package:flutter/material.dart';

import 'package:webview_flutter/webview_flutter.dart';





class WebViewExample extends StatefulWidget {

  @override

  _WebViewExampleState createState() => _WebViewExampleState();

}





class _WebViewExampleState extends State<WebViewExample> {

  @override

  Widget build(BuildContext context) {

    return Scaffold(

      appBar: AppBar(

        title: const Text('Web View Example'),

      ),

      body: const WebView(

        initialUrl: 'http://www.baidu.com', // 替换为你想要嵌套的网页地址

        javascriptMode: JavascriptMode.unrestricted, // 允许执行JavaScript代码

      ),

    );

  }

}

其中在pubspec.yaml文件中添加webview_flutter插件依赖: 然后运行flutter pub get来获取插件依赖。

我的第一个flutter项目(Android & Webview),flutter,android,Webview

四.可能遇到的问题

1.flutter 打开网页ERR_CLEARTEXT_NOT_PERMITTED

方案: 在`android/app/src/main/AndroidManifest.xml`文件中的`application`标签下添加以下行:

```xml

android:usesCleartextTraffic="true"

```

- 保存文件并重新编译Flutter应用。

https://blog.csdn.net/ly_xiamu/article/details/131931357

2.minSdkVersion is 16 不匹配,直接修改android/app/src/build.gradle 改成对应的如 19

我的第一个flutter项目(Android & Webview),flutter,android,Webview

五.编译出apk

1.你可以直接在AS中运行或者项目cmd命令行中flutter build apk命令来生成未签名的APK文件,它将位于Flutter项目的/build/app/outputs/flutter-apk目录下。

2.签名apk

给APK签名—两种方式(flutter android 安装包)_☆七年的博客-CSDN博客

创造价值,乐哉分享!776147358文章来源地址https://www.toymoban.com/news/detail-611291.html

到了这里,关于我的第一个flutter项目(Android & Webview)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python数据科学 | 11】应用实战:我的第一个开源项目-基金定投回测工具

    这是机器未来的第60篇文章 原文首发地址:https://robotsfutures.blog.csdn.net/article/details/127712752 【Python数据科学快速入门系列 | 01】Numpy初窥——基础概念 【Python数据科学快速入门系列 | 02】创建ndarray对象的十多种方法 【Python数据科学快速入门系列 | 03】玩转数据摘取:Numpy的索引

    2024年02月02日
    浏览(127)
  • 猿创征文|Python-sklearn机器学习之旅:我的第一个机器学习实战项目

    目录 前言 一、从目的出发 1.导入数据 二、项目开启 1.导入数据

    2024年01月24日
    浏览(57)
  • 我的第一个项目(十二) :分数和生命值的更新(后端增删查改的"改")

    好家伙,写后端,这多是一件美逝. 关于这个项目的代码前面的博客有写  我的第一个独立项目 - 随笔分类 - 养肥胖虎 - 博客园 (cnblogs.com)   现在,我们登陆进去了,我开始和敌人战斗,诶,打到一百分了,我现在要把这个分数保存起来      随便写一个测试样例    (确实是非常朴实无

    2024年02月01日
    浏览(40)
  • Android Studio 加载一个 WebView 来访问网页

    为了实现在 Android Studio 加载一个 WebView 来访问网页,您可以按照以下步骤进行操作: 在布局文件中添加 WebView。在 res/layout 目录下创建一个新的 layout xml 文件(例如 webview_layout.xml)。在该文件中添加一个 WebView: 在 Java 代码中添加 WebView 的逻辑。在 Activity 类中创建 WebView 对

    2024年02月02日
    浏览(45)
  • 构建你的第一个Android应用

    一、Android的核心组件 Android是一种基于Linux的开源操作系统,主要用于移动设备,如智能手机和平板电脑。Android的设计目标是为用户提供一个统一、灵活和丰富的用户体验,同时保持开放性和兼容性。 Android的核心组件 包括: 应用程序框架:提供了一套用于开发和运行应用程

    2024年02月01日
    浏览(55)
  • android开发:用IDEA建立你的第一个APP

            主要是记录一下各种小坑。         IDEA目前是第一流行的java开发工具,同时也支持android开发,可以替代安卓官方的andriod studio,不过仍然要依赖android sdk。         本例指导你完成第一个app,需要一台Windows PC和一部android手机。 目录 一、下载安装IDEA 二、新建and

    2024年02月04日
    浏览(67)
  • flutter android Webview 打开网页错误ERR_CLEARTEXT_NOT_PERMITTED 、 net:ERR_CACHE_MISS

    前言:当你在Flutter应用中,使用WebView尝试打开的网页时,android环境可能会遇一些问题 原因:Android 9及更高版本,默认情况下,禁止应用程序通过非安全的明文HTTP连接进行网络通信。为了解决这个问题,你可以采取以下三种方法之一: - 将你的网页迁移到使用HTTPS连接。这是

    2024年02月14日
    浏览(41)
  • Android项目在 app 中通过 WebView 访问 url显示空白,使用浏览器可以打开,Android WebView加载出现空白页面问题解决

    服务器证书校验主要针对 WebView 的安全问题。 在 app 中需要通过 WebView 访问 url,因为服务器采用的自签名证书,而不是 ca 认证,使用 WebView 加载 url 的时候会显示为空白,出现无法加载网页的情况。 使用 ca 认证的证书,在 WebView 则可以直接显示出来,不需要特殊处理。 以往

    2024年02月04日
    浏览(54)
  • 【Flutter】使用Android Studio 创建第一个flutter应用。

    首先下载好 flutter sdk和 Android Studio。 FlutterSDK下载 Android Studio官网 我的是 windows。 查看flutter安装环境。 如果没有,自己在环境变量的path添加下flutter安装路径。 在将 Path 变量更新后,打开一个新的控制台窗口,然后执行下面的命令。如果它提示有任何的平台相关依赖,那么

    2024年02月10日
    浏览(64)
  • 我的NPI项目之设备系统启动(八) -- Android14的GKI项目

    GKI是什么? Google为什么要推行GKI? GKI全称General Kernel Image。GKI在framework和kernel之间提供了标准接口,使得android OS能够轻松适配/维护/兼容不同的设备和linux kernel。 Google引入GKI的目的是将Framework和Kernel进一步的解耦。因为,android一直高度依赖linux kernel, linux kernel一更新,an

    2024年04月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包