Blogs
调试Flutter plugin
Submitted by hubdog on Wed, 2020-04-29 16:27如何从Native代码(Android或者IOS)发送事件通知给Flutter
Submitted by hubdog on Wed, 2020-04-29 15:38Flutter里面ListView不能直接放到Column中
Submitted by hubdog on Sat, 2020-04-25 15:49html小窍门img标签绑定无效时显示默认图像
Submitted by hubdog on Fri, 2020-04-17 09:59有时,img标签绑定的图像可能没有,onerror可以强制给它一个fallback的图像返回
<img src="/cover/nocover.jpg" width="120" height="150" alt="纵横星际之暗黑风暴" onerror="this.src='/cover/nocover.jpg'">
Flutter 里面降级pub
Submitted by hubdog on Fri, 2020-04-10 12:55默认ide中只有pub get , pub upgrade pub outdated命令
问题是一旦升级pub,发现无法编译通过的时候,想要降级就不行了
降级的命令是在pubspec.yaml文件所在目录下执行命令
flutter --no-color pub downgrade
不降级的话,你会发现无论你在pubspec.yaml中如何设定pub的版本,它总是会生成一个pubspec.lock文件,指向升级后的版本,这个避免大量升级pub版本后导致无法编译的问题
使用Neon做快速的Endian变换
Submitted by hubdog on Wed, 2020-04-01 16:49通过opengl得到的RGBA格式跟Delphi的TBitmap格式不一样,所有的字节是逆序的,neon指令一个时钟周期可以并行处理16个字节的Endian变换.参考了https://github.com/zbjornson/node-bswap这里的代码.
static void libenc_ARGBToBGRA(JNIEnv *env, jobject thiz, jbyteArray frame, jint src_width, jint src_height) { jbyte *argb_frame = env->GetByteArrayElements(frame, NULL); uint8_t * argb=(uint8_t *) argb_frame; for (int p=0; p<src_height*src_width*4; p+=16, argb+=16) { uint8x16_t v = vld1q_u8(argb); v = vrev32q_u8(v); vst1q_u8(argb, v); }
IOS下面如果文件夹中的文件名包含特殊字符Delphi无法取到
Submitted by hubdog on Sat, 2020-03-21 17:22TDirectory.GetFiles方法用的是linux的函数,对特殊字符的文件会认为是目录导致无法取得列表
下面这个函数用NSFileManager绕过了这个问题
function GetFiles(APath:string):TStringDynArray; var fm:NSFileManager; files:NSArray; I: Integer; list:TStrings; f:string; isDir:boolean; begin fm := TNSFileManager.Wrap(TNSFileManager.OCClass.defaultManager); files:=fm.contentsOfDirectoryAtPath(StrToNSStr(APath), nil); list:=TStringList.Create; try for I := 0 to files.count-1 do begin
编译SDL2 For Android
Submitted by hubdog on Sun, 2019-11-24 18:38一定不要用Automake的configure,直接调用build-scripts/androidbuildlibs.sh就可以了,注意要升级到2.0.10以上,运行前要安装ndk和android sdk.
编译sdl_mixer2的时候,需要依赖sdl,附件是我修改过的android.mk
用下面的命令编译
ndk-build NDK_PROJECT_PATH=null NDK_LOG=1 APP_BUILD_SCRIPT=Android.mk APP_ABI="arm64-v8a" APP_PLATFORM=android-23 NDK_OUT=build/obj NDK_LIBS_OUT=build/lib
ndk-build在ndk的根目录下
追记:
必须使用我修改过的版本2.0.0,才发现很久以前改的,自己都忘了,主要是sdl的代码都是通过回调获取java class和env,修改后的代码直接find AudioTrack class.
要想使用2.0.10的opengles,可能需要大改
flutter的dio上传多个文件到spring boot的后端
Submitted by hubdog on Mon, 2019-09-23 19:01注意dio上传多个文件时,字段名是写死的files[],一定要设为
这个才行
ExpansionTile嵌入ListView
Submitted by hubdog on Thu, 2019-08-08 16:46之前在ExpansionTile中嵌入Listview会报错.修正方法很简单,设置shrinkWrap=true,参考
https://stackoverflow.com/questions/52214706/flutter-vertical-viewport-u...