手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表全部文章

flutter 获取API数据时,中文乱码

在使用flutter的http库请求API时,发现返回的数据均为乱码,例如这样:上海市长宁区长宁路1189号来福士广场东区401-402

原来使用的是:json.decode(response.body),看来不能直接对字符串进行处理。所以还是安稳的改用:json.decode(utf8.decode(response.bodyBytes))

至此问题解决。

 

Tags: decode, json

这次疫情,连北斗神拳的联名酒也没保住。。。。。。

如题。实在买不到酒喝了,,把20年买的这两瓶酒也干掉了。心碎

这里有介绍:北斗の拳 本格芋焼酎套裝 900ml (共兩瓶) - WHISKIMEN
以后也买不到了。所幸,它进了我的肠胃,也算是有一个好归宿了。。。

flutter 获取状态栏高度

 Flutter默认的APP是直接包含状态栏的,当然如果你使用Scaffold,并且设置了appBar,那就不用纠结,他能够管理沉浸式的顶部。

如果由自己控制,会发现statusBar,被APP的主要内容压着,所以必须要整体高度去掉statusBar(电池条)的高度
 
1、data:ui的方法:MediaQueryData.fromWindow(window).padding.top ,这个要import data:ui
2、context方法: MediaQuery.of(context).padding.top 
 
方法2会有个小问题,如果你使用了SafeArea来进行包含项目,并设置top:true,你获取到的 top 就是 EdgeInsets.zero。即为0,看了下源码才发现,SafeArea其实就是Padding,根据你设置的参数设置好Padding后。同时remove了原来的padding。所以导致获取到的值就是0了。。。。因此使用方法2的时候。要先将top值存为全局变量才OK。

valet 支持多版本的php啦

Valet 支持多版本下的PHP啦 。

要想valet支持多版本PHP,你必须要将valet升级到3.0以上
 
更新方法:
```
This super exciting new feature is now officially released, as a part of Valet 3! To update: 1. Update your global Valet constraint to "^3.0" 2. Run `composer global update laravel/valet` 3. Run `valet install` 4. Party On, Wayne!
```
so easy。如果你在使用mac,那个 phpmon也支持valet3啦 。记得更新哦
如果你已经装过,那么直接brew upgrade phpmon,如果你之前没有装过,支行
```
brew tap nicoverbruggen/homebrew-cask
brew install --cask phpmon
```
 
参考:
1、Laravel Valet 3 Released With Multi-Version PHP Support | Laravel News (laravel-news.com)
2、nicoverbruggen/phpmon: Lightweight, native Mac menu bar app that interacts with Laravel Valet. Helps you manage multiple PHP installations, locate config files and more. (github.com)
 

predis扩展数组和对象的存入

PHP有不少Redis库,比如pecl的Redis库(phpredis),就是直接自带了数组的存取和读出,因为他在存储和读出的时候自动序列化了。象是象predis就不行,如果你直接存一个数组去,那么它就会报warning,同时存一个Array到指定的KEY上。

但是predis允许你封装自定义的redis方法。比如jsonset/jsonget,这时候你利用这些自定义的方法来获取或写入数组即可。(基于Laravel,其他的也一样,其他参考:Setting arrays · Issue #136 · predis/predis (github.com))

只是官方的Issue中 【Predis\Profile\ServerProfile:】已经不存在了,要换成【Predis\Profile\Factory】,其余可以复制

----

基于Laravel的话,上述的数组可以放到config里,就啥出不用配置了~~

PHP代码
  1. if (!function_exists('yredis')) {  
  2.     class StringSetJson extends Predis\Command\StringSet  
  3.     {  
  4.         protected function filterArguments(array $arguments)  
  5.         {  
  6.             $arguments[1] = json_encode($arguments[1]);  
  7.             return $arguments;  
  8.         }  
  9.     }  
  10.   
  11.     class StringGetJson extends Predis\Command\StringGet  
  12.     {  
  13.         public function parseResponse($data)  
  14.         {  
  15.             return json_decode($data, true);  
  16.         }  
  17.     }  
  18.   
  19.     class StringSetPhp extends Predis\Command\StringSet  
  20.     {  
  21.         protected function filterArguments(array $arguments)  
  22.         {  
  23.             $arguments[1] = serialize($arguments[1]);  
  24.             return $arguments;  
  25.         }  
  26.     }  
  27.   
  28.     class StringGetPhp extends Predis\Command\StringGet  
  29.     {  
  30.         public function parseResponse($data)  
  31.         {  
  32.             return unserialize($data);  
  33.         }  
  34.     }  
  35.   
  36.     /** 
  37.      * 这个方法是为了读redis,但是不含prefix 
  38.      * @param  string  $connection 
  39.      * @return RedisManager 
  40.      */  
  41.     function yredis()  
  42.     {  
  43.         try {  
  44.             $redis = app('yredis');  
  45.         } catch (Exception $e) {  
  46.             app()->singleton('yredis'function ($app) {  
  47.                 $config = $app->make('config')->get('database.redis', []);  
  48.                 unset($config['options']['prefix']);  
  49.                 if(env('REDIS_CLIENT') == 'predis'){  
  50.                     $config['options']['profile'] = function ($options$option) {  
  51.                         $profile = \Predis\Profile\Factory::getDefault();  
  52.                         $profile->defineCommand('jsonset''StringSetJson');  
  53.                         $profile->defineCommand('jsonget''StringGetJson');  
  54.                         $profile->defineCommand('phpset''StringSetPhp');  
  55.                         $profile->defineCommand('phpget''StringGetPhp');  
  56.                         return $profile;  
  57.                     };  
  58.                 }  
  59.                 return new \Illuminate\Redis\RedisManager($app, \Illuminate\Support\Arr::pull($config'client''phpredis'), $config);  
  60.             });  
  61.             app()->bind('yredis.connection'function ($app) {  
  62.                 return $app['yredis']->connection();  
  63.             });  
  64.             $redis = app('yredis');  
  65.         }  
  66.         return $redis;  
  67.     }  
  68. }  
因为laravel的默认config会带 prefix,所以写一个简单的,其实就是为了在写数据的时候不加     prefix 。。。

 

 

Records:299712345678910»