问题描述
我有一个Netflix模型应用程序,我想与他人共享电影内容,如果接收者拥有该应用程序,则该内容应在他/她的应用程序中打开,或者如果该应用程序不存在,请访问网站
我尝试使用Firebase,但是效果不佳,所以我在uni_links上进行了尝试,但这是我第一次使用它,并且没有找到很多有关它的教程。
下面是我的代码,纯属扑朔迷离,并使用了共享小部件来共享内容。
import 'dart:async';
import 'package:Flutter/material.dart';
import 'package:Flutter/services.dart';
import 'package:share/share.dart';
import 'package:uni_links/uni_links.dart';
// Share tab
enum UniLinksType { string,uri }
class SharePage extends StatelessWidget
{
SharePage(this.shareType,this.share,this.image);
final shareType;
final VideoDataModel share;
final image;
String latestLink;
Uri latestUri;
StreamSubscription sub;
UniLinksType type = UniLinksType.string;
initPlatformState() async
{
if(type == UniLinksType.string)
{
await initPlatformStateForStringUniLinks();
}
else
{
await initPlatformStateForUriUniLinks();
}
}
initPlatformStateForStringUniLinks() async
{
sub = getLinksstream().listen((String link)
{
latestLink = link ?? "UnkNown";
latestUri = null;
try
{
if(link != null)
{
latestUri = Uri.parse(link);
}
}
on FormatException{}
},onError: (err)
{
latestLink = "Failed to load latest link: $err";
latestUri = null;
});
getLinksstream().listen((String link)
{
print('got link: $link');
},onError: (err)
{
print('got err: $err');
});
String initialLink;
Uri initialUri;
// Platform messages may fail,so we use a try/catch PlatformException.
try
{
initialLink = await getinitialLink();
print("initial link: $initialLink");
if (initialLink != null)
{
print("in if");
initialUri = Uri.parse(initialLink);
}
}
on PlatformException
{
initialLink = 'Failed to get initial link.';
initialUri = null;
}
on FormatException
{
initialLink = 'Failed to parse the initial link as Uri.';
initialUri = null;
}
}
Future initPlatformStateForUriUniLinks() async
{
sub = getUriLinksstream().listen((Uri uri)
{
latestUri = uri;
latestLink = uri?.toString() ?? 'UnkNown';
},onError: (err)
{
latestUri = null;
latestLink = 'Failed to get latest link: $err.';
});
getUriLinksstream().listen((Uri uri)
{
print('got uri: ${uri?.path} ${uri?.queryParametersAll}');
},onError: (err)
{
print('got err: $err');
});
Uri initialUri;
String initialLink;
try
{
initialUri = await getinitialUri();
print('initial uri: ${initialUri?.path}'' ${initialUri?.queryParametersAll}');
initialLink = initialUri?.toString();
}
on PlatformException
{
initialUri = null;
initialLink = 'Failed to get initial uri.';
}
on FormatException
{
initialUri = null;
initialLink = 'Bad parse the initial link as Uri.';
}
latestUri = initialUri;
latestLink = initialLink;
return latestUri;
}
Widget shareText()
{
return Text
(
"Share",style: TextStyle
(
fontFamily: 'Lato',fontSize: 12.0,fontWeight: FontWeight.w600,letterSpacing: 0.0,color: Colors.white
),);
}
Widget shareTabColumn()
{
return Column
(
mainAxisAlignment:
MainAxisAlignment.center,children: <Widget>
[
Icon
(
Icons.share,size: 30.0,color: Colors.white,),new Padding
(
padding: const EdgeInsets.fromLTRB(0.0,0.0,10.0),shareText(),],);
}
@override
Widget build(BuildContext context)
{
return Expanded
(
child: Material
(
child: new InkWell
(
onTap: ()
{
Share.share('$shareType'+ share.id.toString() + "\n" + share.name);
initPlatformState();
},child: shareTabColumn(),color: Colors.transparent,)
);
}
}
在共享内容中,我想获取我的域名(例如www.example.co.in)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)