flutter bug【持续更】

在这里插入图片描述在这里插入图片描述
对flutter有兴趣的小伙伴可以一起学习呀~

好用的命令行

flutter pub pub cache repair :清理缓存

错误一:

  • flutter project插入图片异常
xjdMacBook-Pro:flutter_app_layout xj.d$ flutter run -d all
Running "flutter packages get" in flutter_app_layout...          
Error on line 40, column 2 of pubspec.yaml: Expected a key while parsing a block mapping.
 assets:
 ^                                                                                                                                          
pub get failed (65)

flutter插入图片

1.根项目创建文件名为【图像】文件夹

2.将文件复制到文件夹下面

3.pubspec.yaml文件下面配置该图片

注意图的名字都正确,配置和使用都保持一致(楼主该图随便百度下的),否则无法找到资源

​​​​​​​​​在这里插入图片描述

错误二:

  • 错误提示:请在android / folde中查看您的Gradle项目设置
 +818 ms] 
           ------------------------------------------------------------
           Gradle 4.1
           ------------------------------------------------------------
           
           Build time:   2017-08-07 14:38:48 UTC
           Revision:     941559e020f6c357ebb08d5c67acdb858a3defc2
           
           Groovy:       2.4.11
           Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
           JVM:          1.8.0_152-release (JetBrains s.r.o 25.152-b06)
           OS:           Mac OS X 10.14.1 x86_64
[{"event":"app.progress","params":{"appId":"d7911b72-32cb-4f2c-b548-e7b8e073da36","id":"0","progressId":null,"finished":true}}]
Resolving dependencies...
[{"event":"app.progress","params":{"appId":"d7911b72-32cb-4f2c-b548-e7b8e073da36","id":"1","progressId":null,"message":"Resolving dependencies..."}}]
 
 
FAILURE: Build failed with an exception.
           
           * Where:
           Build file '/Users/xj.deng/Ali/widgets/hybrid_stack_manager/example/android/app/build.gradle' line: 15
           
           * What went wrong:
           A problem occurred evaluating project ':app'.
           > Could not resolve all files for configuration 'classpath'.
              > Could not find lint-gradle-api.jar (com.android.tools.lint:lint-gradle-api:26.1.2).
                Searched in the following locations:
                    https://jcenter.bintray.com/com/android/tools/lint/lint-gradle-api/26.1.2/lint-gradle-api-26.1.2.jar
           
           * Try:
           Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
           
 
 
.....
 * Error running Gradle:
           Exit code 1 from: /Users/xj.deng/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter 锁屏下持续定位需要使用 Android 系统的后台定位功能。在 Flutter 中可以通过使用 `android_alarm_manager` 库和 `background_location` 库来实现。具体步骤如下: 1. 在 `android/app/src/main/AndroidManifest.xml` 文件中添加以下权限: ```xml <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> ``` 2. 在 `android/app/build.gradle` 文件中添加以下依赖: ```groovy dependencies { implementation 'com.google.android.gms:play-services-location:17.1.0' implementation 'com.transistorsoft:background-geolocation:3.0.6' } ``` 3. 在 `android/app/src/main/kotlin/包名/MainActivity.kt` 文件中添加以下代码: ```kotlin import io.flutter.embedding.engine.FlutterEngine import io.flutter.embedding.android.FlutterActivity import io.flutter.plugins.GeneratedPluginRegistrant import com.transistorsoft.flutter.backgroundgeolocation.BackgroundGeolocationPlugin import com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin import io.flutter.plugin.common.MethodChannel import android.os.Build.VERSION import android.os.Build.VERSION_CODES import android.content.Intent import android.os.Bundle class MainActivity: FlutterActivity() { private val CHANNEL = "com.example.location/background_location" private val BACKGROUND_LOCATION_SERVICE_CLASS_NAME = "com.transistorsoft.flutter.backgroundgeolocation.HeadlessTask" private lateinit var backgroundLocationPlugin: BackgroundGeolocationPlugin override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) GeneratedPluginRegistrant.registerWith(FlutterEngine(this)) backgroundLocationPlugin = BackgroundGeolocationPlugin() backgroundLocationPlugin.onAttachedToEngine(flutterEngine!!) MethodChannel(flutterEngine!!.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result -> if (call.method == "startBackgroundLocation") { startBackgroundLocation() result.success(true) } else if (call.method == "stopBackgroundLocation") { stopBackgroundLocation() result.success(true) } else { result.notImplemented() } } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) backgroundLocationPlugin.onActivityResult(requestCode, resultCode, data) } override fun onDestroy() { super.onDestroy() backgroundLocationPlugin.onDetachedFromEngine(flutterEngine!!) } private fun startBackgroundLocation() { val intent = Intent(this, BACKGROUND_LOCATION_SERVICE_CLASS_NAME) if (VERSION.SDK_INT >= VERSION_CODES.O) { startForegroundService(intent) } else { startService(intent) } } private fun stopBackgroundLocation() { val intent = Intent(this, BACKGROUND_LOCATION_SERVICE_CLASS_NAME) stopService(intent) } } ``` 4. 在 `lib/main.dart` 文件中添加以下代码: ```dart import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; const CHANNEL = 'com.example.location/background_location'; void main() { runApp(MyApp()); } class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { static const platform = const MethodChannel(CHANNEL); bool _isLocationStarted = false; void _startLocation() async { try { await platform.invokeMethod('startBackgroundLocation'); setState(() { _isLocationStarted = true; }); } catch (e) { print(e); } } void _stopLocation() async { try { await platform.invokeMethod('stopBackgroundLocation'); setState(() { _isLocationStarted = false; }); } catch (e) { print(e); } } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: const Text('Background Location'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( 'Location is ${_isLocationStarted ? 'running' : 'stopped'}.', ), SizedBox(height: 20), ElevatedButton( onPressed: !_isLocationStarted ? _startLocation : null, child: Text('Start Location'), ), SizedBox(height: 20), ElevatedButton( onPressed: _isLocationStarted ? _stopLocation : null, child: Text('Stop Location'), ), ], ), ), ), ); } } ``` 这样就可以在 Flutter 应用中启动和停止后台定位服务了。注意,在 Android 10 及以上版本中,需要用户授权后台定位权限才能正常工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值