flutter-android
多端开发框架
含义:通过一套代码编译成在 H5/微信小程序/React Native/百度小程序/支付宝小程序等端运行的代码。
技术简介:Taro,uniapp
Taro是一个开放式跨端跨框架解决方案,支持使用React、Vue.js、Nerv等框架来开发小程序、H5、react Native等应用。[3]
跨平台开发:
含义:跨平台概念是软件开发中一个重要的概念,即不依赖于操作系统,也不依赖硬件环境。一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。相对而言如果某种计算机语言不用修改代码即可做到高度跨平台,那么此语言就越抽象,硬件控制力就越低,只适合开发高度抽象的模型系统。诸如PHP和易语言,都已做到了跨平台。它们将可以在多种系统下开发,运行和维护。 [1]
技术简介:fluter
flutter
含义:绘图引擎渲染:flutter,Flutter 是由 Google 开发的,一个跨平台 UI 解决方案.;Flutter是一款 Google 开源的 SDK,可跨平台地为移动端,Web 端,桌面端构建高性能的应用。虽然但是我们着重于 flutter 的移动端跨平台开发功能。
优势:一套代码,直接产出 Android + iOS 两个平台的应用。 这是跨平台开发框架的共同优势,不再多说。
工具: Android Studio:Android集成开发工具,Android Studio 是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。
flutter打包成安卓app
创建项目
flutter create 项目名
添加包命令
flutter pub add wifi_iot
运行命令
flutter run --no-sound-null-safety
打包命令
flutter build apk --no-sound-null-safety
导包错误:(Target of URI doesn’t exist)
flutter packages get
flutter创建安卓项目,webinpappview嵌入网址,并且需要申请相机和麦克风权限
依赖项:
dependencies:
flutter:
sdk: flutter
webview_flutter: ^0.3.10+4
flutter_inappwebview: ^5.3.2
permission_handler: 5.1.0+2
permission: 0.1.7
oktoast: 2.3.2
flutter_easyloading: ^3.0.5
#^6.1.6
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.5
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIDEO_CAPTURE" />
<uses-permission android:name="android.permission.AUDIO_CAPTURE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 相机权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 麦克风权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<!--.接收启动完成的广播权限-->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:permission_handler/permission_handler.dart'; Future main() async {
WidgetsFlutterBinding.ensureInitialized();
// await Permission.microphone.request();
// await Permission.camera.request(); // 同时申请多个权限:
await [
Permission.microphone,
Permission.camera,
].request();
runApp(const MyApp());
} class MyApp extends StatefulWidget {
const MyApp({super.key}); @override
// ignore: library_private_types_in_public_api, unnecessary_new
_MyAppState createState() => new _MyAppState();
} class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return const MaterialApp(home: InAppWebViewPage());
}
} class InAppWebViewPage extends StatefulWidget {
const InAppWebViewPage({super.key}); @override
// ignore: library_private_types_in_public_api, unnecessary_new
_InAppWebViewPageState createState() => new _InAppWebViewPageState();
} class _InAppWebViewPageState extends State<InAppWebViewPage> {
// ignore: unused_field
late InAppWebViewController _webViewController; @override
Widget build(BuildContext context) {
return Scaffold(
// ignore: avoid_unnecessary_containers
body: Container(
child: Column(children: <Widget>[
Expanded(
// ignore: avoid_unnecessary_containers
child: Container(
child: InAppWebView(
initialUrlRequest: URLRequest(
url: Uri.parse("https://kh.tyzfchina.com.cn:4433")),
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
mediaPlaybackRequiresUserGesture: false,
),
),
onWebViewCreated: (InAppWebViewController controller) {
_webViewController = controller;
},
androidOnPermissionRequest: (InAppWebViewController controller,
String origin, List<String> resources) async {
return PermissionRequestResponse(
resources: resources,
action: PermissionRequestResponseAction.GRANT);
}), //该事件在WebView请求访问指定资源(即安卓原生WebChromeClient.onPermissionRequest event )的权限时触发。
),
),
])));
}
}
报错解决方案
flutter打包报错 Build failed due to use of deprecated Android v1 embedding.
原因:由于使用了已弃用的 Android v1 嵌入,构建失败。
解决:android/app/src/main下的找到AndroidManifest.xml修改application标签内容如下
<application
android:name="${applicationName}" //修改之前的android:name="io.flutter.app.FlutterApplication"为这样
android:label="flutter_nest_page_view"
android:icon="@mipmap/ic_launcher">
<meta-data //添加这个meta-data标签内容
android:name="flutterEmbedding"
android:value="2" />
...
</application>
Flutter 3.3.6 中FlatButton, RaisedButton, & OutlineButton找不到
原因:
FlatButton,RaisedButton, andOutlineButton这三个widget 已经有了新的控件替代,并且有新的主题做对应的替换即可
- 参考:(59条消息) Flutter 3.3.6 中FlatButton, RaisedButton, & OutlineButton找不到_闪亮的大早的博客-CSDN博客
FlatButton(
onPressed: onPressed,
child: Text('Button'),
// ...
); RaisedButton(
onPressed: onPressed,
child: Text('Button'),
// ...
); OutlineButton(
onPressed: onPressed,
child: Text('Button'),
// ...
);
TextButton(
onPressed: onPressed,
child: Text('Button'),
// ...
); ElevatedButton(
onPressed: onPressed,
child: Text('Button'),
// ...
); OutlinedButton(
onPressed: onPressed,
child: Text('Button'),
// ...
);
flutter Execution failed for task ‘:audioplayers:compileReleaseKotlin‘.
android->build.gradle文件,修改ext.kotlin_version = ‘1.5.10’
Error: Member not found: ’packageRoot’ in Flutter
flutter pub upgrade
flutter-android的更多相关文章
- Flutter Android 正式打包、以及升级应用 重新打包
Flutter Android 正式打包 打开androidStudio软件 1.修改版本号. android->app->src->main->AndroidManifest ...
- Flutter Android 真机调试指南
操作预览: 准备一条数据线,并连接电脑和手机: 使用 flutter devices 查看设备能否找到: 在 Android studio 中选择你的真机,然后点击 [debug]: 真机自动安装Ap ...
- flutter android沉浸式状态栏
import 'package:flutter/services.dart'; import 'dart:io'; class _MyAppState extends State<MyApp&g ...
- flutter android keystore
keytool -genkey -v -keystore E:/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key k ...
- (1) Flutter android studio安装
Flutter由两部分组成 Flutter引擎和Flutter框架 Flutter引擎由C++编写,在android上通过NDK编译,在ios上通过llvm编译 Flutter框架由dart编写 1. ...
- windows + flutter +android+ vscode 安装配置运行流程(详细版本)
flutter 是由谷歌发布的一个全新的响应式.跨平台.高性能的移动开发框架,可以快速在iOS和Android上构建高质量的原生用户界面. 框架特点 快速开发:Flutter的热重载可以快速地进行测试 ...
- flutter Android打包
以下内容均是在mac版本电脑上的操作 1.生成签名 //根目录执行以下命令 keytool -genkey -v -keystore ~/sign.jks -keyalg RSA -keysize 2 ...
- Flutter Android 真机器调试 、模拟器调试、Vscode 中开发 Flutter 应用
必备条件: 1.准备一台 Android 手机 2.手机需要开启调试模式 3.用数据线把手机连上电脑 4.手机要允许电脑进行 Usb 调试 5.手机对应的 sdk 版本必须安装 注意: 1.关闭电脑上 ...
- Flutter Android Toast Message(flutter访问Android Toast Message)
原文 Android Toast通知可用于向用户发送快速消息,并在几秒钟后消失. 但是当涉及Flutter时,没有直接的方式来显示这些Toast消息.因此,我们需要找到一种替代方法来实现它.在这种情况 ...
- [Flutter] Android沉侵式标题栏顶部叠加层去除
可能你的app是这样: 框起来部分和标题栏颜色并不一致. 调用下面的代码可以变成一样. import 'package:flutter/services.dart'; static SystemUiO ...
随机推荐
- 微服务笔记之Euraka(2)
Eureka Server启动过程 入口:SpringCloud充分利用了SpringBoot的自动装配的特点 Eureka-server的jar包,发现在MERA-INF下面有配置文件spring. ...
- Oralyzer-20220205
Usage: oralyzer.py [-h] [-u URL] [-l PATH] [-crlf] [-p PAYLOAD] [--proxy] [--wayback] 可选参数: -h, --he ...
- 使用nvm实现自由切换nodejs版本
首先安装使用nvm前需要删除卸载干净!!! 可以去GitHub安装最新的版本:https://github.com/nvm-sh/nvm 或者直接下载Windows的 releases版本安装:htt ...
- 微积分 I 笔记
1.1 集合 这一节复习了高中关于集合的基础知识 介绍了一些新的概念 笛卡尔积 (Cartesian Product) 集合 \(X\) 与 \(Y\) 的笛卡尔积 (直积) \(X \times Y ...
- Zabbix源码安装与yum安装
一.源码安装方式:zabbix-server LAMP环境准备: #groupadd zabbix#useradd -g zabbix zabbix 1.安装依赖包: #yum install gcc ...
- 处理uniapp激励广告
使用uniapp查看广告 激励视频广告组件.激励视频广告组件是一个原生组件,并且是一个全局单例.层级比上屏 Canvas 高,会覆盖在上屏 Canvas 上.激励视频 广告组件默认是隐藏的,需要调用 ...
- 使用FTP协议的主机必须设置xftp版本1.2...
1.查看是不是没安装xftp,xshell上的那个按钮只是启动按钮 2.还是不行的话,试试在linux上安装这个: yum install lrzsz
- oracle排查慢sql
查询最慢的SQL select * from (select sa.SQL_TEXT, sa.SQL_FULLTEXT, sa.EXECUTIONS "执行次数", round(s ...
- vscode 终端中运行执行js文件
问题汇总 1.在vscode中执行node -v没有反应或者执行js文件出现下图错误 解决办法: 1.先关闭vscode,找到vscode的执行文件,在兼容性中勾上以管理员身份运行此程序,该问题win ...
- Python占位符总结:%方式和format方式
Python中,我们在预定义某类具有相似格式的变量或者输出一句含有多个变量的提示语句时,往往用到占位符,而占位符有两种表达方式: %方式: 下面这段代码摘自matplotlib的_init_.py文件 ...