- 博客(12)
- 收藏
- 关注
原创 flutter获取键盘高度
在build方法中调用:var keyboardSize = MediaQuery.of(context).viewInsets.bottom;键盘弹出时,即可获取到键盘高度。
2021-10-16 20:58:38
2966
原创 flutter自绘进度条
class VideoProgressBarController extends ChangeNotifier{ double progressBarValue = .0; updateProgressValue(double value){ progressBarValue = value; notifyListeners(); }}前言本文的记录如何用CustomPaint、GestureDetector实现一个进度条控件。首先需要说明的是flutter..
2021-10-08 22:14:30
2060
原创 animations 2.0.1 源码解读
animations 是一款flutter插件,提供了封装好的一些路由切换动画。最近闲来无事去看了一下它的代码,理解其关键部分代码,并实现一个精简版的animations插件。虽然不完善,但是总体思路还是对的。首先看OpenContainer类,关键部分是传入两个Widget,一个openBuilder是打开后要展示的页面,closeBuilder被点击之后能触发动画的控件。 @override Widget build(BuildContext context) { retur
2021-08-29 23:16:00
263
原创 flutter_inappwebview加载http请求时需要注意的问题
flutter_inappwebview加载http请求,非https时由于安全性或者其他问题。默认是无法加载的。需要一些额外的设置。根据官网的描述:Starting with Android 9 (API level 28), cleartext support is disabled by default。从安卓9开始,因为cleartext属性默认是不支持的,需要手动设置为可用状态。解决方法:在AndroidManifest.xml中添加android:usesClear
2021-08-19 23:29:56
1171
2
原创 dart语言构造函数中存在异步方法时的处理方法
dart语言构造函数中如果存在异步方法,编程时如果不注意特殊处理的话,很容易使代码出现未定义行为。例如下面的代码:class MyComponent{ MyComponent() { init(); } init()async{ var ret = await _init(); print('$ret'); } _init(){ return Future.delayed(new Duration(seconds: 2), () {
2021-08-02 22:39:10
689
原创 使用compute而不是直接操作Isolate
由于dart 语言不支持多线程,在开发中我尝试过将耗时操作放在Isolate中。虽然能成功实现需求,但Isolate复杂的操作让代码显得十分臃肿,实在很影响心情。好在查阅一些资料后,发现可以使用compute创造Isolate,而不是自己管理Isolate。使用之后效果十分理想,在此记录一下。compute的使用非常简单,理论上超过毫秒的操作放到compute里面都是合适的,贴一个找到的例子:import 'package:flutter/foundation.dart';import 'dart
2021-07-14 21:02:16
348
原创 dart中late关键字的作用
Dart 2.12 添加了late关键字,他有两个作用:1)显式声明一个非空的变量,但不初始化如下,_temperature如果不加late关键字,类实例化时此值是不确定的,无法通过静态检查,加上late关键字可以通过静态检查,但由此会带来运行时风险。// Using null safety:class Coffee { late String _temperature; void heat() { _temperature = 'hot'; } void chill() {
2021-06-24 21:49:58
16668
2
原创 flutter布局技巧
(仅作备忘)使用AspectRatio设置固定比例的控件// 设置显示比例body: Column( childern: <Widget>[ Container( height: 150, child: AspectRatio( width: double.infinity,// 设置宽度 aspectRatio: 16/9, .
2021-06-22 20:45:43
266
1
原创 在flutter中通过MethodChannel调用java层的OpenGL函数渲染图形
引言在flutter中如果只是想简单地播放视频,可以使用flutter官方提供的video_player插件,或者其他第三方提供的插件。但是如果想在flutter
2021-06-13 00:13:38
3341
6
原创 flutter状态栏适配
首先看看flutter官方提供的状态栏默认适配方案 显然,只是简单地加一个模糊背景,显然不够美观,目前常见的app的状态栏应该是透明的,且字体颜色会随背景颜色变化。flutter中状态栏样式设置分局部设置与全局设置两种。设置全局状态栏样式首先import 'package:flutter/services.dart';然后在runApp后调用setSystemUIOverlayStyle()方法void main() { runApp(MyApp()); Sys..
2021-06-12 15:58:43
913
2
原创 Qt基础布局
主要使用QVBoxLayout、QGroupBox。#include "mainwindow.h"#include "ui_mainwindow.h"#include <QtWidgets>MainWindow::MainWindow(QWidget *parent) : QWidget(parent) //, ui(new Ui::MainWindow){ //ui->setupUi(this); //this->setWindowF
2021-06-08 20:32:00
191
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人