GVKun编程网logo

flutter 开发者帮助 APP(flutter开发工具)

16

如果您对flutter开发者帮助APP感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于flutter开发者帮助APP的详细内容,我们还将为您解答flutter开发工具的相关问

如果您对flutter 开发者帮助 APP感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于flutter 开发者帮助 APP的详细内容,我们还将为您解答flutter开发工具的相关问题,并且为您提供关于Flutter - flutter desktop embedding / flutter 桌面支持、Flutter APP开发 学习记录: flutter_swiper轮播图、Flutter 云开发工具包 apifm-flutter 0.0.6 发布、Flutter 开发 App 的优缺点的有价值信息。

本文目录一览:

flutter 开发者帮助 APP(flutter开发工具)

flutter 开发者帮助 APP(flutter开发工具)

Flutter Go

https://img.alicdn.com/tfs/TB1OJkeHNYaK1RjSZFnXXa80pXa-229-229.png

帮助开发者快速上手 Flutter Flutter Go 1.0 Android版已正式发布

版本更新历史

按时间顺序,展示重要的提交更新内容。

地址

开发规范

由于类似 javascript, java, object-c,等开发者的语言习惯不同而产生歧义,我们依据官方提供的 dart 语言规范 定制。

<< Flutter Go 开发规范第一版 >>

The Flutter-Go Roadmap(路线图) for 2019

考虑到 Flutter 未来的变化和策略的可变性, roadmap 不排除有一定调整,但总体不会变化太大。

Release安装包下载地址

android正式版,下载地址:

  • 华为市场已上线,华为应用市场搜索 "Fluttergo"或者直接点击下载

iphone正式版,下载地址:

  • AppStore 搜索 "Fluttergo" 或者直接点击下载

基础环境

本项目环境持续更新. 请定期更新各依赖包.

  • dart(version: 2.0.0)
  • Flutter(version: v1.0.0)

背景

Flutter 是什么?

2018年6月21日Google发布Flutter首个release预览版,作为Google 大力推出的一种全新的响应式,跨平台,高性能的移动开发框架。Flutter是一个跨平台的移动UI框架,旨在帮助开发者使用一套代码开发高性能、高保真的Android和iOS应用。

Flutter优点主要包括:

  • 跨平台
  • 开源
  • Hot Reload、响应式框架、及其丰富的控件以及开发工具
  • 灵活的界面设计以及控件组合
  • 借助可以移植的GPU加速的渲染引擎以及高性能ARM代码运行时已达到高质量的用户体验

Flutter Go 的由来

  • Flutter学习资料太少,对于英文不好的同学相对来说比较困难
  • 官网文档示例不够健全,不够直观
  • 各个 widget 的用法各异,属性纷繁,要运行一个 widget 的 demo 往往要到处翻阅各种资料

Flutter Go 的优势

  • 详解常用 widget 多达 140+ 个
  • 配套 Demo 详解 widget 常规用法
  • 集中整合 widget 案例,一个 APP 搞定所有常用 widget 的用法
  • 持续迭代 ‘追新’ 官方版本

app 预览

   

Core Team


@minghe


@ryan730


@Nealyang

 
@hanxu317317

 
@DeckeDeng

版权说明

  • 感谢大家对 Flutter go 的支持和下载,但近期发现,有类似直接被发布到苹果 app store 上的行为,并未注明真实来源,copyright 和 项目的 github 地址,以及开发者的版权相关信息( 包括删除"首页栏的版权声明"和"关于我们"的行为 );

  • 上述行为,打击了 Flutter go 开发者的积极性,同时干扰了 Flutter go app 的正常发布渠道,基于 app 开源项目的发布特殊性,特更新 LICENSE 「 开源许可证 」,由 MIT 协议 更改为 BSD 协议, 同时建议不要随意发布到公共渠道的应用商店,影响官方 Flutter go 的app版本迭代;

  • 大家可以继续放心的开源使用,但是要求注意和遵守以下许可前提:

    * 版权声明样式
    //copyright (c) 2018-present, Alibaba Group Holding Limited. All rights reserved.
    
    * 源代码的重新分发必须保留上述版权声明,条件清单和免责声明。
    
    * 二进制形式的再分发必须复制上述版权声明,此条件列表以及文档中的以下免责声明和/或随分发提供的其他材料。
  • 由于本开源项目是供大家学习和交流 Flutter 之用,里面耗费了开发人员大量的心血,精力和热情,请尊重开发者的劳动成果,以及相关许可证之规定;

  • 大家的互相信任,尊重与支持,才是开源社区前进的动力和来源.

Powered by 阿里拍卖前端团队

Flutter - flutter desktop embedding / flutter 桌面支持

Flutter - flutter desktop embedding / flutter 桌面支持

2019年5月9日,随着谷歌在IO19宣布Flutter支持Web平台,就标志着Flutter已经全面支持所有平台(移动、网页、桌面、嵌入式)。

 

 

现编一个跨平台小段子:

微软Xarmarin:喵喵喵???不是我最先做的吗,咋没人关注???

Facebook React Native:我是做的最好的跨平台。

谷歌Flutter:去你的吧,支持桌面端不,嵌入式?哈哈哈

苹果SwiftUI:老司机们,等等我。

 

 

但是这次要说的是,Flutter for desktop,Flutter支持桌面版已经有很长一段时间了,但是一直都没大研究。主要原因就是现在除了Flutter for mobile可以用在production以外,其他的三个平台知识现在已经验证技术上可行,但仍处于technical preview。像现在的官方大部分plugins,仍然没有适配desktop版本,更不要说第三方的plugins。这些plugins在桌面上调用时,轻者会点击毫无反应,重者会导致程序崩溃。而且现在桌面版普遍的一个问题就是,当app最小化的时候,app崩溃。

所以大家激动归激动,千万别冲动。

不过既然有了Flutter for desktop,我们就尝鲜一下,看看在桌面上是什么效果。

 

1 工具准备

我用的是Windows平台,需要Visual Studio 2017 or 2019,并且包含“C++桌面开发负载”。其他平台可以去Github主页查看。

 

2 下载官方示例

打开 Desktop Embedding for Flutter,下载整个项目并解压。把整个example文件夹拖进VS Code或者在VS Code 里面打开文件夹,

 

 然后VS Code提示 Some packages are missing or out of date, would you like to get them Now?

 毫不犹豫的点击Get Packages按钮,或者在终端输入Flutter packages get也行

 如果网络没问题的话或者镜像配置正确(下载不下来或者配置镜像自行搜索,本文不做介绍)的话,VS Code就会输出

[example] Flutter packages get
Running "Flutter pub get" in example...                             6.7s
exit code 0

 

3 桌面版运行配置

由于我们下载的是官方示例,所里都配置好了。但是我们还是要看一下,因为以后要移植自己的项目鸭~~~

  3a 打开pubspec.yaml文件

# See https://github.com/Flutter/Flutter/wiki/Desktop-shells#fonts
  fonts:
    - family: Roboto
      fonts:
        - asset: fonts/Roboto/Roboto-Thin.ttf
          weight: 100
        - asset: fonts/Roboto/Roboto-Light.ttf
          weight: 300
        - asset: fonts/Roboto/Roboto-Regular.ttf
          weight: 400
        - asset: fonts/Roboto/Roboto-Medium.ttf
          weight: 500
        - asset: fonts/Roboto/Roboto-Bold.ttf
          weight: 700
        - asset: fonts/Roboto/Roboto-Black.ttf
          weight: 900

 

官方指定了Roboto字体,大部分应用也都需要指定一个字体。但是现在的话,不指定,也可以运行。不过有的Widgets可能在字体显示上有异常。

官方的解释:

Fonts
Flutter applications may default to fonts that are standard for the target platform, but unavailable on desktop. For instance, if the target platform is TargetPlatform.iOS the Material library will default to San Francisco, which is available on macOS but not Linux or Windows.

Most applications will need to set the font (e.g., via ThemeData) based on the host platform, or set a specific font that is bundled with the application. Other widgets that doesn't use ThemeData may not display without extra font specification (e.g., the DEBUG banner's text).

Symptoms of missing fonts include text failing to display and/or console logging about failure to load fonts.

 

  3b 打开main.dart

       设置运行平台

import 'package:Flutter/foundation.dart'
    show debugDefaultTargetPlatformOverride;

void main() {
  // See https://github.com/Flutter/Flutter/wiki/Desktop-shells#target-platform-override
  debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia;

  runApp(new MyApp());
}

 

   3c 切换Flutter到master channel

        在终端中输入

Flutter channel master

  3d 升级master channel到最新版,然后会自动运行运行Flutter doctor

Flutter upgrade

  3e 设置运行平台为桌面模式

      如果VS Code终端是PowerShell,那么输入

$env:ENABLE_FlutteR_DESKTOP="true"

      CMD输入

set ENABLE_FlutteR_DESKTOP=true

 

4 Flutter Run

  如果按照上面操作没有问题的话,那么最激动

Flutter APP开发 学习记录: flutter_swiper轮播图

Flutter APP开发 学习记录: flutter_swiper轮播图

说点儿闲话

大部分app都有轮播图,一般是展示一些新闻公告通知等图片,在flutter最强大的siwiper, 多种布局方式,无限轮播,Android和IOS双端适配,github:flutter_swiper

使用:

加载图片

一般是从本地代码中或者使用网络图片,那么,首先将资源添加到项目的 pubspec.yaml 文件中(更多细节请参阅Assets and images):

flutter:
   assets:
   - images/news_1.png
   - images/news_1.png
   - images/news_1.png

如果项目中所需要使用的图片资源太多,也可以直接直接这样写:
(1)、包含一个目录下的所有 assets,需要在目录名称的结尾加上/

flutter:
  assets:
    - assets/

注意只包含目录下根节点的所有文件。
(2)、如果要添加子目录下的文件,需要给每个目录创建节点:

flutter:
    assets: [images/,images/index-icons/] # 配置代码中使用的图片所放置的文件夹及其子文件夹
 

显示base64图片

这里插个题外话,使用图片显示的辑中方法:Image class: A widget that displays an image.
其中,Image.memory可以用来显示base64图片,具体使用如下:

import ''dart:convert'';

//"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAAuCAYAAACvdRK..."
// 直接获取`base64,`之后的数据
pictureData = "iVBORw0KGgoAAAANSUhEUgAAAKAAAAAuCAYAAACvdRK..."
Image.memory(
    Base64Decoder().convert(pictureData), // 转成Uint8List
    fit: BoxFit.contain,
    height: 160,
)

参考:flutter 显示base64 图片

flutter_swiper

pubspec.yaml文件里添加

flutter\_swiper : ^lastest\_version

到项目根目录下的 pubspec.yaml ,并且根目录运行命令行

flutter packages get

flutter_swiper的最新版本号查看:pub.dev:flutter_swiper

实现轮播图 代码

import ''package:flutter/material.dart'';
import ''package:flutter_swiper/flutter_swiper.dart'';
import ''message.dart'';

class IndexScreen extends StatefulWidget {
  @override
  _SwiperViewState createState() => _SwiperViewState();
}

class _SwiperViewState extends State<IndexScreen> {
  // 声明一个list,存放image Widget
  List<Widget> imageList = List();

  @override
  void initState() {
    imageList
      ..add(Image.asset(
        ''images/news_1.png'',
        height: 200,
        fit: BoxFit.fitWidth, // 显示可能拉伸,可能裁剪,宽度充满
      ))
      ..add(Image.asset(
        ''images/news_2.png'',
        height: 200,
        fit: BoxFit.fitWidth,
      ))
      ..add(Image.asset(
        ''images/news_3.png'',
        height: 200,
        fit: BoxFit.fitWidth,
      ));
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        leading: Builder(
          builder: (BuildContext context) {
            // APP的logo图
            return Image.asset(''images/logo-header.png'');
          },
        ),
        title: new Text(
          ''APP
          style: TextStyle(fontSize: 18.0, height: 1.2, fontFamily: "Courier"),
        ),
        actions: <Widget>[
          new IconButton(
              icon: new Icon(Icons.message),
              onPressed: () {
                // 右上角的通知消息图标,点击进入消息列表
                Navigator.push(
                  context,
                  new MaterialPageRoute(
                      builder: (context) => new MessageScreen()),
                );
              }),
        ],
      ),
      body: Column(
        children: <Widget>[
          Container(
            width: MediaQuery.of(context).size.width,
            height: 200,
            child: new Swiper(
              itemBuilder: _swiperBuilder,
              itemCount: 3,
              itemWidth: MediaQuery.of(context).size.width,
              itemHeight: 200.0,
              loop: true,
              autoplay: true,
              pagination: null,
              control: null,
              viewportFraction: 1,
              scale: 1,
            ),
          ),
          Container(
            // padding: const EdgeInsets.fromLTRB(0, 10, 0, 5),
            width: MediaQuery.of(context).size.width,
            // height: MediaQuery.of(context).size.height,
            // 将上方的header、底部菜单和轮播图的高度减掉
            height: MediaQuery.of(context).size.height - 400,             
            child: new Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly, //对齐方式:平均间隔
              children: [
              // 下方的其他页面布局
              ],
            ),
          ),
        ],
      ),
    );
  }

  Widget _swiperBuilder(BuildContext context, int index) {
    return (imageList[index]);
  }
}

以上是使用静态资源加载图片来实现轮播图,实际项目中,基本都是后端接口返回的数据,这就涉及到另外的知识点, GitHub - dio: 发起网络请求, 参见我整理的dio的相关学习记录: Flutter 使用dio来发起网络请求以及Cookie管理。
通过接口请求后端返回的数据后,对数据进行处理并通过setState来更新视图,代码:

    setState(() {
        // 处理返回数据
        var rtn = response.data[''content''];
        rtn.forEach((f) {
          // print("image title:" + f["title"] + " imageUrl:" + f["imageUrl"]);
          imageList
            ..add(Image.network(
              f["imageUrl"],
              height: 200,
              fit: BoxFit.fitWidth, // 显示可能拉伸,可能裁剪,宽度充满
            ));
        });
        // print(imageList);
      });

遇到的问题

在首页上,通过底部导航菜单点击跳转到另一个页面后,再回到首页,轮播图会出现疯狂的切换图片轮播一段时间后停下来继续以正常速度轮播,具体问题参我的提问:Flutter flutter_swiper轮播图的问题
这个问题我已经解决了,解决办法描述在我的提问下我自己的回答里记录了,这里就不再赘述了,直接附上解决是修改的代码:
IndexScreen 的 class中增加以下代码:

  bool isLoading = true;  
  
   setState(() {
        // 处理返回数据 上文中有,省略了
        isLoading = false;
        // print(imageList);
   });
   
  
  Widget _buildProgressIndicator() {
    return new Padding(
      padding: const EdgeInsets.all(8.0),
      child: new Center(
        child: new Opacity(
          opacity: isLoading ? 1.0 : 00,
          child: new CircularProgressIndicator(),
        ),
      ),
    );
  }

build方法中增加判断:

  Container(
            width: MediaQuery.of(context).size.width,
            height: 125,
            child: imageList.length == 0
                ? _buildProgressIndicator()
                : new Swiper(
                    itemBuilder: _swiperBuilder,
                    itemCount: imageList.length,
                    itemWidth: MediaQuery.of(context).size.width,
                    itemHeight: 125.0,
                    loop: true,
                    autoplay: true,
                    autoplayDelay: 3000, //自动播放延迟
                    autoplayDisableOnInteraction: true, //触发时是否停止播放
                    pagination: null, //设置 new SwiperPagination() 展示默认分页指示器
                    control: null, //设置 new SwiperControl() 展示默认分页按钮
                    controller: swiperController,
                    viewportFraction: 1,
                    scale: 1,
                  ),
          ),
  

参考资料:

github:flutter_swiper
Assets and images
pub.dev:flutter_swiper
笔记-Flutter之轮播图(多样式)

Flutter 三种方式实现页面切换后保持原页面状态

相关文章

Flutter APP开发 学习记录: bottomNavigationBar底部导航菜单 本篇文章是底部导航菜单这篇文章中对应的IndexScreen()的布局

dio的相关学习记录: Flutter 使用dio来发起网络请求以及Cookie管理

Flutter 云开发工具包 apifm-flutter 0.0.6 发布

Flutter 云开发工具包 apifm-flutter 0.0.6 发布

Flutter 云开发工具包 apifm-flutter 0.0.6 发布,更新如下:

增加了积分模块功能:

读取订单积分抵扣规则

 Apifm.scoreDeductionRules()

通过该方法读取后台设置的积分抵扣规则

读取积分赠送规则

 Apifm.scoreRules([Map<String, String> params])

签到送积分

签到规则

 Apifm.scoreSignRules()

读取后台设置的签到送积分规则:

签到一次送多少积分;连续签到 x 天赠送 y 积分;

签到

 Apifm.scoreSign(String token)

当前登录用户进行签到,token 为调用登录接口登录成功后返回的登录凭证

读取今日签到信息

 Apifm.scoreTodaySignedInfo(String token)

判断今天有没有签到

错误码返回 700 表示未签到;错误码返回 0 表示已经签到

签到记录

 Apifm.scoreSignLogs(Map<String, String> params)

读取历史签到记录

使用积分券兑换积分

 Apifm.scoreExchange(String token, String number)

使用积分券的券号,兑换积分

积分明细

 Apifm.scoreLogs(Map<String, String> params)

用户的每一次积分变动,都会详细记录积分明细

 

每一次升级都会给你惊喜,感谢你的关注!

Flutter 开发 App 的优缺点

Flutter 开发 App 的优缺点

从数据到大模型应用,11 月 25 日,杭州源创会,共享开发小技巧

哈喽大家好,我是咕噜的铁蛋!随着移动互联网技术的不断发展,手机 App 应用已成为人们日常生活和工作中不可或缺的一部分。为了快速迁移到移动应用领域,许多企业和开发者都在寻找高效、跨平台的开发工具。在这种背景下,之前 Google 推出了 Flutter,一种开源的移动 UI 框架,允许开发者使用一套代码库为多平台生成本地应用程序。今天铁蛋就和大家一起学习了解一下 Flutter 在 App 开发中的优势和不足之处。

一、Flutter 概述

Flutter 是 Google 于 2017 年推出的一款 UI 工具包,旨在帮助开发者通过一次编码,就能在 iOS 和 Android 两大平台上构建漂亮、本地编译的应用程序。Flutter 使用 Dart 语言进行编程,其核心理念是提供高度可定制的丰富组件,使得开发者能够尽可能简单快速地创建高性能的移动应用。

 

二、Flutter 开发 App 的优点

1. 跨平台性能

Flutter 最大的优势之一是其跨平台能力。通过写一次代码,应用可以在 iOS 和 Android 平台上运行,这意味着开发者不需要为每个平台分别编写和维护不同的代码库。这种方法可以显著降低开发和维护的成本,缩短产品上市的时间。

 

2. 接近原生的性能

由于 Flutter 的应用是直接编译为机器码,这使得其性能接近于原生应用。Flutter 的渲染过程是独立于原生平台的,这意味着不管运行在哪个平台,应用都能保持一致的性能特性。

 

3. 热重载(Hot Reload)

Flutter 的热重载功能是其强大的开发功能之一。热重载允许开发者在应用程序运行时动态地更改代码,并立即在应用程序中看到结果。这极大地加快了开发速度,提高了开发效率。

 

4. 丰富的 UI 组件

Flutter 提供了一套丰富的预制 UI 组件库,这些组件允许开发者构建出吸引人的用户界面而无需自定义太多。同时,由于其高度可扩展的界面设计,开发者可以十分轻松地实现个性化的 UI 设计。

 

5. 社区支持和资源

作为 Google 产品,Flutter 有着强大的社区支持,提供了大量的学习资源,包括文档、教程和插件。开发者可以通过社区获取帮助,分享经验,找到解决问题的方法。

 

三、Flutter 开发 App 的缺点

1. 学习曲线

尽管 Flutter 的入门相对简单,但其背后的语言 Dart 可能不像 JavaScript 或 Python 那样普及。因此,初学者可能需要时间来适应 Dart 语言及 Flutter 框架。

 

2. 包大小

由于 Flutter 需要包含自己的渲染引擎和其他组件,使用 Flutter 开发的 App 往往比使用原生代码开发的 App 要大。这可能会影响到最终用户的下载和安装体验。

 

3. 第三方库和插件

虽然 Flutter 社区正在迅速成长,但与 React Native 等其他成熟的框架相比,Flutter 在第三方库和插件的数量和成熟度上仍有差距。这意味着在某些情况下,开发者可能需要自己开发所需的功能。

 

4. 对某些任务的支持不足

目前,Flutter 在某些高级功能上的支持还不是很完善,例如,当涉及到复杂的地图集成或者音视频处理时,开发者可能会发现原生开发可能是更好的选择。

 

5. 平台适配

尽管 Flutter 力求在各平台上保持一致性,但事实上每个平台都有自己的特色和设计准则。在某些情况下,开发者可能需要针对特定平台进行额外的调整和优化,以确保应用能够良好地融入不同的操作系统环境中。

 

四、适用场景与不适用场景

1. 适用场景

   - 快速迭代发展的初创产品或原型设计。

   - 需要部署在多个平台,且拥有统一 UI 设计的应用。

   - 预算有限,需要同时覆盖 iOS 和安卓平台的小团队或个人项目。

 

2. 不适用场景

   - 对 App 体积有极限要求的项目。

   - 需要大量使用特定平台特有功能或服务的应用。

   - 游戏开发等对性能有极端要求的应用场景。

 

 

Flutter 作为一款新兴的移动应用开发框架,以其跨平台能力、高性能和开发效率吸引了大量开发者。不过,与此同时,它也有一些缺陷和局限需要考量。对于开发者来说,在选择采用 Flutter 作为 App 开发工具之前,需综合评估项目需求、资源情况、目标平台等多方面因素,以做出合适的决策。随着 Flutter 社区的壮大和技术的进步,相信 Flutter 还会持续改进并在未来的 App 开发中扮演越来越重要的角色。

 

好了各位同学们,今天铁蛋就讲到这里啦,咱们下次见,如果有什么不对或者还有需要补充的地方可以给铁蛋留言私信噢!

关于flutter 开发者帮助 APPflutter开发工具的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Flutter - flutter desktop embedding / flutter 桌面支持、Flutter APP开发 学习记录: flutter_swiper轮播图、Flutter 云开发工具包 apifm-flutter 0.0.6 发布、Flutter 开发 App 的优缺点的相关知识,请在本站寻找。

本文标签: