From 4a81506aeca0511ca33d7d9fbf9e4876933fb9e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=93=E5=8F=91=E5=8F=97=E9=95=BF=E7=94=9F?= Date: Tue, 22 Oct 2019 01:10:27 +0800 Subject: [PATCH] =?UTF-8?q?flutter=E5=88=9D=E8=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_posts/flutter/Flutter初见.md | 107 +++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/source/_posts/flutter/Flutter初见.md b/source/_posts/flutter/Flutter初见.md index d78fe1a..b716695 100644 --- a/source/_posts/flutter/Flutter初见.md +++ b/source/_posts/flutter/Flutter初见.md @@ -11,6 +11,7 @@ categories: ### 搭建开发环境 1. 下载解压Flutter的sdk,并且将其中的bin目录配置到环境变量 2. Android Studio安装安卓SDK,通常启动时如果未安装过都会自动执行下载安装 + 3. Android Studio安装Flutter的插件 ![Android Studio flutter插件](/images/flutter/android-studio_flutter插件.png) 安装flutter插件时会自动安装其依赖的dart插件 @@ -24,3 +25,109 @@ categories: No devices available代表还未启动虚拟机或者连接真机 其余几项都是校验通过的 +### 创建flutter项目 +当Android Studio的flutter插件安装无误之后,就可以创建flutter项目了 +![创建flutter项目](/images/flutter/创建flutter项目.png) + +新建的是一个flutter的demo项目 +包含一个标题栏,一个按钮,和中间区域内的若干文字 +点击按钮时进行计数,文字会相应变化 +![flutter demo](/images/flutter/flutter_demo.png) + +项目当中包含一个main.dart文件 +内容如下 +```dart +// 引入material样式 +import 'package:flutter/material.dart'; +// 程序运行入口 +void main() => runApp(MyApp()); + +// App实体类 +class MyApp extends StatelessWidget { + // This widget is the root of your application. + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + // 主题样式 + primarySwatch: Colors.blue, + ), + // 首页对象以及首页的标题 + home: MyHomePage(title: 'Flutter Demo Home Page'), + ); + } +} + +class MyHomePage extends StatefulWidget { + MyHomePage({Key key, this.title}) : super(key: key); + + final String title; + + @override + _MyHomePageState createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + int _counter = 0; + + void _incrementCounter() { + setState(() { // 计数方法 + _counter++; + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + // 标题栏 + title: Text(widget.title), + ), + body: Center( // 居中元素 + // 子元素 + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'You have pushed the button this many times:', + ), + Text( // 文字元素以及样式 + '$_counter', + style: Theme.of(context).textTheme.display1, + ), + ], + ), + ), + // 浮动按钮 + floatingActionButton: FloatingActionButton( + onPressed: _incrementCounter, // 点击事件 + tooltip: 'Increment', + child: Icon(Icons.add), // 子元素是一个图标 + ), + ); + } +} +``` +以上代码当中构建对象都省略了new关键字 +其中的每个对象都是一个组件(Widget) + +### 常用组件 +组件以及组件的一些属性,基本算是前端html和css的思想 + +#### Text组件 +这是一个文本组件,可以用于在App当中显示文字 +```dart +Text( + '这是一段文字', + textAlign: TextAlign.left, // 文本对齐方式(左对齐) + maxLines: 3, // 最大显示行数 + overflow: TextOverflow.ellipsis, // 文本长度溢出的处理方式(显示为...) + style: TextStyle( + color: Color.fromARGB(255, 20, 130, 40), // 文字颜色 + fontSize: 20, // 字号大小 + decoration: TextDecoration.underline, // 下划线 + decorationStyle: TextDecorationStyle.solid // 下划线类型 + ) +) +``` \ No newline at end of file