简单示例,这里用的是Fusion的Table
1 | import { Table, Button } from "@alifd/next"; |
实际上核心代码就这几行
1 | const htmlString = '' // 这里就是你要复制的东西 |
1 | import { Table, Button } from "@alifd/next"; |
实际上核心代码就这几行
1 | const htmlString = '' // 这里就是你要复制的东西 |
Flutter 3.0首次运行时卡在"Running Gradle task assembleDebug"的解决办法
找到flutter sdk路径下的这个文件
flutter/packages/flutter_tools/gradle/flutter.gradle
打开,并找到这个位置
1 | buildscript { |
注释掉 google()
和 mavenCentral()
,并更改为
1 | buildscript { |
找到当前工程路径下的这个文件
/android/build.gradle
和第一步一样,打开,并注释掉 google()
和 mavenCentral()
并更改
注意第二步有两处,所以要改两个地方
还是这个文件
/android/build.gradle
找到DEFAULT_MAVEN_HOST
并替换为国内的镜像地址
1 | class FlutterPlugin implements Plugin<Project> { |
基本上完成上面这三步,就可以运行如下命令尝试再次启动了
1 | flutter clean |
1 | flutter run |
什么?你还不行啊。。。我倒,接着往下看吧,真没想到你这么倒霉
有可能是第三步的镜像地址挂了,可以把第三步再改回来,咱们改host
打开这个网站 https://tool.chinaz.com/speedtest/storage.googleapis.com
获取你的能访问到的加速ip地址,改hosts
有好多个呢,你自己试试吧
1 | # localhost name resolution is handled within DNS itself. |
再试试咯,不行就往下走
1 | flutter clean |
1 | flutter run |
到这基本上宣告你的gradle是死活下载不下来了,只能离线下载了,找到工程目录下的这个文件打开,找到里面的distributionUrl
/android/gradle/wrapper/gradle-wrapper.properties
1 | ... |
你看啊,我这里是gradle-7.5-all.zip
那就去访问gradle的离线下载网站吧,找到gradle-7.5-all.zip
并且下载下来
https://services.gradle.org/distributions/
然后去系统的gradle存放目录替换掉死活下载不下来的那些东西
例如我是C:\Users\vear\.gradle\wrapper\dists\gradle-7.5-all\6qsw290k5lz422uaf8jf6m7co\gradle-7.5-all.zip
那就把C:\Users\vear\.gradle\wrapper\dists\gradle-7.5-all\6qsw290k5lz422uaf8jf6m7co
下面的东西全删了
把新下载的gradle-7.5-all.zip
拷贝进去
再回来试试咯,反正我是行了,你不行就只能另请高明了
1 | flutter clean |
1 | flutter run |
1 |
|
1 | function request(option = { |
1 | // get请求 |
非常的好用!
1 | function fileToBase64(file, callback) { |
竟然还有童鞋不知道咋上传文件,下面封装了一下,直接调用pickerFileBase64这个函数就可以选取文件并且得到base64字符串了
1 | function pickerFileBase64() { |
下载base64字符串文件也是非常简单的,直接调用就完事了
1 | function downloadBase64File(base64,name){ |
GameObject → 3D Object → Cylinder
创建1个圆柱体
GameObject → 3D Object → Cube
创建12个方块
GameObject → 3D Object → Cube
创建3个方块
效果如下
1 | using System; |
输入这样一个数组
1 | [ |
要求经过处理得到这样一个结果, 也就是 2x2 = 4个
1 | [ |
或者这个数组
1 | [ |
要求经过处理得到这样一个结果, 也就是 2x2x3 = 12个
1 | [ |
代码也很简单,没啥难度,只是做一下记录
1 | let arr = [ |
一看哇,着很简单啊,刷刷刷开始写代码
1 | import React, { useEffect, useState } from "react"; |
一顿操作猛如虎,运行一看就咋回事跑成这个鬼样子呢?
怎么没正常显示呢
写一个useInterval的hooks,这样时间就正常显示了
1 | import React, { useEffect, useState, useRef } from "react"; |
详细文档getx官方中文文档
GetX 是 Flutter 上的一状态管理、依赖注入和路由管理的包
将 Get 添加到你的 pubspec.yaml 文件中。
1 | dependencies: |
在需要用到的文件中导入
1 | import 'package:get/get.dart'; |
Flutter默认创建的 “计数器 “项目有100多行(含注释),为了展示Get的强大功能,我将使用 GetX 重写一个”计数器 Plus版”,实现:
而完成这一切只需 26 行代码(含注释)
1 | void main() => runApp(GetMaterialApp(home: Home())); |
1 | class Controller extends GetxController{ |
1 | class Home extends StatelessWidget { |
要想让它变得可观察,你只需要在它的末尾加上”.obs”。
1 | var name = 'Jonatas Borges'.obs; |
而在UI中,当你想显示该值并在值变化时更新页面,只需这样做。
1 | Obx(() => Text("${controller.name}")); |
这就是全部,就这么简单。
在你的MaterialApp前加上 “Get”,把它变成GetMaterialApp。
1 | GetMaterialApp( // Before: MaterialApp( |
导航到新页面
1 |
|
1 |
|
要关闭snackbars, dialogs, bottomsheets或任何你通常会用Navigator.pop(context)关闭的东西。
1 | Get.back(); |
进入下一个页面,但没有返回上一个页面的选项(用于闪屏页,登录页面等)。
1 | Get.off(NextScreen()); |
进入下一个页面并取消之前的所有路由(在购物车、投票和测试中很有用)。
1 | Get.offAll(NextScreen()); |
Get依赖管理器就是导入状态管理
注入依赖:
1 | Get.put<PutController>(PutController()); |
获取依赖:
1 | Controller putController = Get.find<PutController>(); |
提示: Get依赖管理与包的其他部分是解耦的,所以可以导入多个
Get.find()
,它可以帮你找到控制器,这个东西也是有限制的,这东西就找不到直接实例化的控制器,只能找到通过依赖注入
的控制器
1 | class ListPage extends StatelessWidget { |