今天被flutter开发板的graphql恶心到了

501 阅读2分钟

前面是尝试着用flutter的graphql_flutter组件,链接graphql服务端的,很顺利。

最近突发奇想,想要用flutter开发一个web端的应用,然后编译成web包,再和提供服务的Ruby on Rails后端一起发布。

想法是,Ruby on Rails,使用graphql-ruby组件,提供graphql后端服务。

然后用flutter的web端开发出前端,再编译成web包,最后将web包复制到Ruby on Rails工程的public目录下,就可以前后端融合了。中间用graphql来通讯。

Ruby on Rails现在基本已经把前端都交给了webpack管理的各种js包了,比如react和vue,那么flutter应该也是可以的。

今天被彻底恶心到了。

要想开发web端,按照网上的介绍,先将flutter转成了dev版本:

flutter channel dev

flutter upgrade

可以打开web开发了,结果发现所有想graphql服务器发送的请求都报错了,在各种工具中测试的graphql query都是正确的,但是到了flutter里面,就变了。感觉是对graphql服务器做了get,Rails服务器就报错了,route里面没有定义graphql路径的get事件。

反复测试多次,在android虚拟机里面也测试了一次,还是不对。

只得将flutter分支切回stable:

flutter channel stable

flutter upgrade

再测试,说是找不到localhost了。我用的win10,服务端是在本机的WSL的ubuntu下跑的。windows端的各种测试工具都没有问题,包括graphql测试工具,postman测试工具等。

没办法,改成直接绑定IP地址,跑通了。flutter拉到了graphql的数据。

再改回dev的版本,同样的代码,告诉我说是系统不允许做http请求,localhost、指定IP都不行。

这到底是为了什么啊?完全无法理解。