嘿,我在 Flutter 应用程序中使用 ShowCaseView。当我第一次打开我的应用程序时,注册后没有展示,甚至没有显示应该“展示”的图标。但是当我关闭应用程序并再次打开它时,它工作得很好。
\n这是涉及展示的代码:
\nclass _HomeSearchPageState extends State<HomeSearchPage> {\n\n final keyOne = GlobalKey();\n\n\n void initState() {\n super.initState();\n\n WidgetsBinding.instance.addPostFrameCallback(\n (_) => ShowCaseWidget.of(context).startShowCase([\n keyOne,\n ]),\n );\nRun Code Online (Sandbox Code Playgroud)\n}
\n现在是脚手架:
\n return Scaffold(\n appBar: PreferredSize(\n preferredSize: Size.fromHeight(getTopBarSize()),\n child: AppBar(\n automaticallyImplyLeading: false,\n title: Text(\n 'username',\n style: TextStyle(fontSize: 14),\n ),\n actions: <Widget>[\n Showcase(\n key: keyOne,\n description: 'test',\n child: IconButton(\n icon: Icon(Icons.search),\n onPressed: () {\n showSearch(context: context, delegate: DataSearch())\n .whenComplete(() => setName());\n }),\n ),\n ],\n ),\n ),)\nRun Code Online (Sandbox Code Playgroud)\n我做了与 Github 示例中完全相同的操作,但第一次仍然抛出此错误:
\n …嘿,我正在尝试在经纬度系统中绕其自己的中心旋转一条线。
我得到了角度和两点。所以我尝试附加旋转矩阵,如下所示(以下方法采用点的纬度和经度以及角度):
LatLng rotate(double lat, double long, double angle){
double rad = angle*pi/180;
double newLong = long*cos(rad)-lat*sin(rad);
double newLat = long* sin(rad) + lat*cos(rad);
return LatLng(newLat,newLong);
}
Run Code Online (Sandbox Code Playgroud)
例如我得到了点A(纬度:x,经度:y)和点B(纬度:x,经度:y)。连接这两个点就形成一条线。现在我想用上面的方法围绕它自己的中心旋转两条线,通过调用:
LatLng newA = rotate(A.latitude,A.longitude);
LatLng newB = rotate(B.latitude,B.longitude);
Run Code Online (Sandbox Code Playgroud)
但是当我连接 newA 和 NewB 两个点时,没有达到预期的效果。
正如 @Abion47 在他的回答中澄清的那样,我需要 3 维旋转,但如何做到这一点?如果线非常小,二维是否可能?
latitude-longitude coordinates coordinate-transformation dart flutter