安装
当flutter添加进path后运行flutter doctor查看是否缺少其他环境,建议每安装一个环境重新查询一次。
步骤
- 下载flutter
- 将flutter/bin加入用户环境变量path
- 下载Android Studio
- 配置Android Studio环境,参考文章:https://www.jianshu.com/p/332205db002c
- 新建环境变量ANDROID_HOME,值为SDK根目录
- 添加X:\Android\SDK\tools、X:\Android\SDK\platform-tools至用户下的path内,再次运行flutter doctor检测
- 若出现错误信息,可在下面问题表中找到解决方案
- 如果环境正常则结束,我这提示安装VsC++运行库,解决方案参考下面
- 至此全部安装完毕,可能还会存在[!] HTTP Host Availability,解决方案见下面,若还报其他HTTP连接失败,无视即可
问题
1.Android toolchain - develop for Android devices
X Unable to locate Android SDK.
Install Android Studio from: https://developer.android.com/studio/index.html
On first launch it will assist you in installing the Android SDK components.
(or visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions).
If the Android SDK has been installed to a custom location, please use
flutter config --android-sdk
to update to that location.
添加X:\Android\SDK\tools、X:\Android\SDK\platform-tools至用户下的path内,再次运行flutter doctor检测。
2.找不到Android Studio
运行命令:flutter config --android-studio-dir “路径”
3. cmdline-tools component is missing
Run path/to/sdkmanager --install "cmdline-tools;latest"
See https://developer.android.com/studio/command-line for more details.
打开Android Studio→SDK Manager→Android SDK→SDK Tools安装Android SDK Command-line Tools(latest),然后关闭Android Studio并重新flutter doctor
4. Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses
根据提示,在命令行执行flutter doctor --android-licenses
需要输入的时候,全部输入y即可
5.Visual Studio is missing necessary components. Please re-run the Visual Studio installer for the “Desktop development with C++” workload, and include these components
https://github.com/flutter/flutter/issues/44184
打开Visual Sudio Installer找到使用C++的桌面开发,安装此环境,然后关闭vs重新执行flutter doctor
6.[!] HTTP Host Availability
1、找到flutter sdk的文件目录,打开flutter\packages\flutter_tools\lib\src\http_host_validator.dart
2、将https://maven.google.com/ 修改为https://dl.google.com/dl/android/maven2/
3、关闭cmd命令窗口,重新打开cmd窗口
4、去到flutter\bin目录,删除cache文件夹
5、在cmd命令窗口重新运行flutter doctor,问题解决。
7.run卡在了Running Gradle task ‘assembleDebug’
https://blog.csdn.net/jinglinggg/article/details/105383270
或者翻墙
开发
引入外部包package
在这上面找包https://pub.dev/packages/english_words,比如english_words:
1.找到依赖项选项:
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
english_words: ^4.0.0 #添加外部依赖
2.点击右上角的pub get
3.在其他位置引入lib/main.dart,引入english_words
import 'package:english_words/english_words.dart'
4.正常使用
prefer constant constructors警告
有几种方法可以消除此prefer const with constant constructors
警告。
您可以在文件顶部添加忽略行注释。如果要从文件中删除警告。
// ignore_for_file: prefer_const_constructors
import 'dart:async';
import 'package:flutter/material.dart';
否则,如果要删除该特定行的警告,请在行首添加忽略行注释。
AppBar(
// ignore: prefer_const_constructors
title:Text('Register'),
),
这是禁用规则的最简单方法。
另一个是您可以简单地从analysis_options.yaml
文件中删除以下行。
include: package:flutter_lints/flutter.yaml
但最好保留那条线并在analysis_options.yaml
文件中添加一些规则(这是我根据我的研究得出的个人意见)。
为了避免prefer const with constant constructors
警告,将此规则添加prefer_const_constructors : false
到analysis_options.yaml
文件中。
linter:
rules:
prefer_const_constructors : false
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
还有其他规则可以帮助您使代码变得更好。如果需要,您可以添加以下一些规则(来自pedantic)。
linter:
rules:
- always_declare_return_types
- always_require_non_null_named_parameters
- annotate_overrides
- avoid_init_to_null
- avoid_null_checks_in_equality_operators
- avoid_relative_lib_imports
- avoid_return_types_on_setters
- avoid_shadowing_type_parameters
- avoid_single_cascade_in_expression_statements
- avoid_types_as_parameter_names
- await_only_futures
- camel_case_extensions
- curly_braces_in_flow_control_structures
- empty_catches
- empty_constructor_bodies
- library_names
- library_prefixes
- no_duplicate_case_values
- null_closures
- omit_local_variable_types
- prefer_adjacent_string_concatenation
- prefer_collection_literals
- prefer_conditional_assignment
- prefer_contains
- prefer_equal_for_default_values
- prefer_final_fields
- prefer_for_elements_to_map_fromIterable
- prefer_generic_function_type_aliases
- prefer_if_null_operators
- prefer_inlined_adds
- prefer_is_empty
- prefer_is_not_empty
- prefer_iterable_whereType
- prefer_single_quotes
- prefer_spread_collections
- recursive_getters
- slash_for_doc_comments
- sort_child_properties_last
- type_init_formals
- unawaited_futures
- unnecessary_brace_in_string_interps
- unnecessary_const
- unnecessary_getters_setters
- unnecessary_new
- unnecessary_null_in_if_null_operators
- unnecessary_this
- unrelated_type_equality_checks
- unsafe_html
- use_full_hex_values_for_flutter_colors
- use_function_type_syntax_for_parameters
- use_rethrow_when_possible
- valid_regexps
一个简单的解决方案是在正确的位置添加单词“const”:所以替换:
appBar: AppBar(title: Text('Orange Valley CAA')),
和
appBar: AppBar(title: const Text('Orange Valley CAA')),