小编Mah*_*h P的帖子

Flutter - 如何在应用邀请功能的 firebase 动态链接中传递自定义参数?

你能告诉我如何使用颤振插件 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)

android dart firebase flutter firebase-dynamic-links

12
推荐指数
2
解决办法
7897
查看次数

Flutter - 在使用 StreamBuilder 从 firebase 获取数据后,如何使用 ScrollController 跳转到列表视图的底部?

在使用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)

listview scroll flutter flutter-layout stream-builder

6
推荐指数
1
解决办法
801
查看次数

如何根据flutter中的sharedPrefs值设置动态initialRoute?

目前,我正在处理路由,我想根据 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

3
推荐指数
1
解决办法
2716
查看次数