你能告诉我如何使用颤振插件 firebase_dynamic_links[ https://pub.dev/packages/firebase_dynamic_links#-readme-tab-]发送和获取参数吗?
我想在深层链接/动态链接中传递用户名和密码等参数,如下所示:
uriPrefix: 'https://test.page.link/appinvite?username=Test&password=123456',
link: Uri.parse('https://test.page.link/appinvite?username=Test&password=123456'),
Run Code Online (Sandbox Code Playgroud)
这是传递数据的正确方法吗?
之后我使用下面的代码来获取数据,
await FirebaseDynamicLinks.instance.getInitialLink();
final Uri deepLink = data?.link;
Run Code Online (Sandbox Code Playgroud)
但是,它为我提供了我在 Firebase 控制台中为 Deep Link URL 中的 Firebase 动态链接添加的虚拟网址
目前我可以从 firebase 动态链接打开应用程序,但无法获取自定义参数。
任何帮助将不胜感激。
更新代码:
发送邀请:
_generateAndShareDynamicLink() async {
final DynamicLinkParameters parameters = DynamicLinkParameters(
uriPrefix: 'https://test.page.link/groupinvite',
link: Uri.parse('https://test.page.link/groupinvite'),
androidParameters: AndroidParameters(
packageName: 'com.test.flutter_authentication',
minimumVersion: 0,
),
dynamicLinkParametersOptions: DynamicLinkParametersOptions(
shortDynamicLinkPathLength: ShortDynamicLinkPathLength.unguessable,
),
);
Uri url = await parameters.buildUrl();
shareURL(Uri.https(url.authority, url.path, {"username": "Test"}));
}
Run Code Online (Sandbox Code Playgroud)
用于在 initState() 中获取数据:
FirebaseDynamicLinks.instance.onLink(
onSuccess: (PendingDynamicLinkData dynamicLink) async {
final Uri deepLink …Run Code Online (Sandbox Code Playgroud) 在使用firestore查询流从streambuilder呈现数据后,在列表中使用ScrollController滚动到列表底部的最佳方法是什么?
使用 scrollcontroller.jumpto 方法的最佳位置是什么?
// initialisation
ScrollController scrollController=ScrollController();
// inside initstate() and build method with 1000ms delay - not working
scrollController.jumpTo(scrollController.position.maxScrollExtent);
// widget inside build method
Expanded(
child: StreamBuilder<DocumentSnapshot>(
stream: Firestore.instance
.collection('Data')
.document(widget.dataID)
.snapshots(),
builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) {
print("Called");
if (!snapshot.hasData) {
return Text("Loading");
}
var info= snapshot.data.data;
if (info!= null &&
info["messages"] != null &&
info["messages"].length > 0 &&
userList.length > 0) {
return ListView.builder(
controller: scrollController,
itemCount: info["challengeReplies"].length,
itemBuilder: (BuildContext context, int index) {
return ChallengeReplyListItem(
currentUserID: …Run Code Online (Sandbox Code Playgroud) 目前,我正在处理路由,我想根据 sharedPreferences 值在我的应用程序中设置 initialRoute。
我正在为我的 MaterialAppWidget 使用 Statedulwidget,并在从 sharedPrefs 获取数据后使用 setState() 方法。但是,每次我都得到相同的屏幕。
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
int initScreen = 0;
initPrefs() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
initScreen = prefs.getInt("initScreen");
print("initScreen ${initScreen}");
setState(() {});
}
@override
void initState() {
super.initState();
initPrefs();
}
@override
Widget build(BuildContext context) {
print("initScreen2 ${initScreen}");
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Authentication',
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: initScreen == 0 || initScreen …Run Code Online (Sandbox Code Playgroud) routes sharedpreferences android-studio flutter flutter-layout