Flutter的第一个程序“Hello World”
简介Flutter的第一个程序“Hello World”
本节我们将从创建一个Flutter新项目,并且编写一个“Hello World”的页面。
1、创建项目
$ flutter create hi_flutter
╔════════════════════════════════════════════════════════════════════════════╗
║ A new version of Flutter is available! ║
║ ║
║ To update to the latest version, run "flutter upgrade". ║
╚════════════════════════════════════════════════════════════════════════════╝
Creating project hi_flutter...
..............省略n行....................
All done!
[√] Flutter is fully installed. (Channel stable, v1.0.0, on Microsoft Windows [Version 10.0.17134.706], locale zh-CN)
[!] Android toolchain - develop for Android devices is partially installed; more components are available. (Android SDK 28.0.3)
[√] Android Studio is fully installed. (version 3.2)
[!] IntelliJ IDEA Ultimate Edition is partially installed; more components are available. (version 2017.3)
[!] Connected device is not available.
Run "flutter doctor" for information about installing additional components.
In order to run your application, type:
$ cd hi_flutter
$ flutter run
Your application code is in demo_1\lib\main.dart.
2、根据上面的提示,我们进入到项目目录
zhj@DESKTOP-06Q5JL3 MINGW64 /e/flutter/learn
$ cd hi_flutter/
zhj@DESKTOP-06Q5JL3 MINGW64 /e/flutter/learn/hi_flutter
$
3、在运行项目之前我们需要检测是否有可用设备
zhj@DESKTOP-06Q5JL3 MINGW64 /e/flutter/learn/hi_flutter
$ flutter devices
No devices detected.
Run 'flutter emulators' to list and start any available device emulators.
Or, if you expected your device to be detected, please run "flutter doctor" to diagnose potential issues, or visit https://flutter.io/setup/ for troubleshooting tips.
提示项目的信息,表示没有检测到可用的设备。
4、查看可用的模拟器
zhj@DESKTOP-06Q5JL3 MINGW64 /e/flutter/learn/hi_flutter
$ flutter emulators
4 available emulators:
Nexus_5X_API_28_x86 • Nexus 5X • Google • Nexus 5X API 28 x86
Pixel_API_28 • pixel • Google • Pixel API 28
Pixel_API_28_2 • pixel • Google • Pixel API 28 2
flutter_emulator • pixel • Google
To run an emulator, run 'flutter emulators --launch <emulator id>'.
To create a new emulator, run 'flutter emulators --create [--name xyz]'.
You can find more information on managing emulators at the links below:
https://developer.android.com/studio/run/managing-avds
https://developer.android.com/studio/command-line/avdmanager
从上面可以看出,笔者这里已经有很多模拟器设备了。所以下面我们需要去运行一个模拟器
5、运行其中的一个模拟器
zhj@DESKTOP-06Q5JL3 MINGW64 /e/flutter/learn/hi_flutter
$ flutter emulators --launch Nexus_5X_API_28_x86 #启动一个设备
zhj@DESKTOP-06Q5JL3 MINGW64 /e/flutter/learn/hi_flutter
$ flutter devices #再次查看设备,已经有一个可用的设备了
1 connected device:
Android SDK built for x86 • emulator-5554 • android-x86 • Android 9 (API 28) (emulator)
6、运行当前项目
zhj@DESKTOP-06Q5JL3 MINGW64 /e/flutter/learn/hi_flutter
$ flutter run
Using hardware rendering with device Android SDK built for x86. If you get graphics artifacts, consider enabling software rendering with "--enable-software-rendering".
Launching lib/main.dart on Android SDK built for x86 in debug mode...
Initializing gradle... 4.5s
Resolving dependencies... 39.9s
Gradle task 'assembleDebug'... 65.4s
Built build\app\outputs\apk\debug\app-debug.apk.
Installing build\app\outputs\apk\app.apk... 7.0s
I/OpenGLRenderer(26053): Initialized EGL, version 1.4
D/OpenGLRenderer(26053): Swap behavior 1
D/ (26053): HostConnection::get() New Host Connection established 0xe3bceb80, tid 26100
W/OpenGLRenderer(26053): Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
D/OpenGLRenderer(26053): Swap behavior 0
D/EGL_emulation(26053): eglCreateContext: 0xdf1f0dc0: maj 2 min 0 rcv 2
D/EGL_emulation(26053): eglMakeCurrent: 0xdf1f0dc0: ver 2 0 (tinfo 0xca9560b0)
D/EGL_emulation(26053): eglCreateContext: 0xca90c060: maj 2 min 0 rcv 2
D/EGL_emulation(26053): eglMakeCurrent: 0xca90c060: ver 2 0 (tinfo 0xdfe70c80)
Syncing files to device Android SDK built for x86...
I/Choreographer(26053): Skipped 83 frames! The application may be doing too much work on its main thread.
D/EGL_emulation(26053): eglMakeCurrent: 0xdf1f0dc0: ver 2 0 (tinfo 0xca9560b0)
I/OpenGLRenderer(26053): Davey! duration=1630ms; Flags=1, IntendedVsync=13858837065620, Vsync=13860220398898, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=13860229823620, AnimationStart=13860229909650, PerformTraversalsStart=13860230562000, DrawStart=13860243962160, SyncQueued=13860245190680, SyncStart=13860262930860, IssueDrawCommandsStart=13860263206610, SwapBuffers=13860350582380, FrameCompleted=13860484903860, DequeueBufferDuration=38831000, QueueBufferDuration=1010000,
D/ (26053): HostConnection::get() New Host Connection established 0xc6c26080, tid 26091
D/EGL_emulation(26053): eglMakeCurrent: 0xca90c060: ver 2 0 (tinfo 0xdfe70dd0)
3.8s
To hot reload changes while running, press "r". To hot restart (and rebuild state), press "R".
An Observatory debugger and profiler on Android SDK built for x86 is available at: http://127.0.0.1:54299/
For a more detailed help message, press "h". To detach, press "d"; to quit, press "q".
运行成功后,这就是官方的一个例子
7、编码我们第一个程序“Hello World!”
import 'package:flutter/material.dart';
void main() {
runApp(Center(
child: Text(
"Hello World!",
textDirection: TextDirection.ltr,
),
));
}

到这我们就编写好第一个程序。
前一篇博客中已经说过Golang对Gzip的处理,其实这是我的服务器端的处理,那么当我们服务器返回Gzip压缩的字符串后,客户端如何进行解压呢?本文主要记录下JavaScript对Gzip进行压缩和解压处理。
在PHP中,对二维数组排序还是非常简单的,但是在Golang中对二位数据排序显的就稍显麻烦,但是我们还是可以通过结构体来进行排序,本文主要记录Golang如何通过结构体的多个字段来进行排序。
按钮在我们开发过程中是少不了的,本节将介绍Flutter常用的一些按钮组件,例如:TextButton、OutlinedButton、ElevatedButton
通过sudo命令,可以让普通用户在执行指定命令或程序上,拥有超级管理员的权限。并有针对性将不同的命令授予指定的普通用户,同时普通用户不需要知道root的密码就可以得到授权,授权的方式可以通过visudo配置管理。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题