标签: flutter-navigation

Flutter 延迟函数调用两次

我有一个启动器屏幕,我可以在其中检查是否有特定数据。根据结果​​我显示不同的屏幕

 void main() => runApp(MyApp());


 class MyApp extends StatelessWidget {
   @override
    Widget build(BuildContext context) {
    return MaterialApp(
    theme: ThemeData(
      primarySwatch: Colors.blue,
    ),
    home: LauncherScreen()
  );
 }
}


 class LauncherScreen extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
 print("build, build");
 Future.delayed(new Duration(milliseconds: 2000), () {
  LocalData localData = LocalData();
  localData.getCity().then((city) {
    if (city != null) {
      Const.city = city;
      Navigator.push(
        context,
        MaterialPageRoute(builder: (context) => Home()),
      );
    } else {
      Navigator.push(
        context,
        MaterialPageRoute(builder: (context) => SelectCities()),
      );
    }
  });
});
return Container( …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-navigation

2
推荐指数
1
解决办法
1328
查看次数

使用 Flutter 的 Cupertino 小部件,如何触发底部选项卡栏顶部的水平页面转换

如何在选项卡之一内使用常见的水平页面转换或选项卡栏顶部的常见垂直页面转换,如何在选项卡栏顶部水平推入页面转换?

这在中文平台类型的应用程序中很常见。

在此输入图像描述

ios flutter flutter-navigation flutter-cupertino

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

如何使用通过pushNamed 传递的参数?

假设我有两条路线/firstRoute/secondRoute,分别用于小部件FirstRouteSecondRoute。我正在将一个命名路由与一些参数一起推送到堆栈上,就像这样......

Navigator.pushNamed(
    context,
    "/secondRoute",
    arguments: <String, String>{"key" : "value"},
)
Run Code Online (Sandbox Code Playgroud)

我现在如何在SecondRoute中使用这个值?查看了文档,但没有提及。

dart flutter flutter-navigation

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

无法在新页面路由小部件中访问提供者

我无法访问推送到当前导航器的小部件中的提供程序:

import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
import 'package:provider/provider.dart';


void main() => runApp(MyApp());

class MyModel with ChangeNotifier {
  String a = 'Test1';
  String b = 'Test2';
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {    

    return MaterialApp(
        title: 'Flutter Demo',
        home: ChangeNotifierProvider(
            create: (context) => MyModel(),
            child: MyHomePage()
        )
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  @override
  Widget build(BuildContext context) {    

    return Consumer<MyModel>( …
Run Code Online (Sandbox Code Playgroud)

state dart flutter flutter-navigation

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

Flutter - 弹出直到屏幕没有路由

我有一个 Flutter 应用程序,它的启动方式如下:

void main() async {

  // Check if user is logged in

  runApp(
    MaterialApp(
      home: (isLoggedIn) ? MainPage() : PageLogin(),
    ),
  );
}
Run Code Online (Sandbox Code Playgroud)

我的主页(和我的登录页面)只是 2 个常规的有状态小部件。

class MainPage extends StatefulWidget {
  MainPage({Key key, this.selectedPageDefault = 0}) : super(key: key);

  @override
  _MainPageState createState() => _MainPageState();
}
Run Code Online (Sandbox Code Playgroud)

假设我还有 2 个页面,就像 MainPage :PageOnePageTwo
当我点击 上的按钮时MainPage,它会带我去PageOne,而当我点击 上的按钮时PageOne,它也会带我去PageTwo
我使用以下方式去找他们:

Navigator.of(context).push(
  MaterialPageRoute(
    builder: (context) => PageOne(), // Or PageTwo
  ),
);
Run Code Online (Sandbox Code Playgroud)

现在,当我单击 …

dart flutter flutter-navigation

1
推荐指数
2
解决办法
8240
查看次数

Flutter 2.0 / Dart - 如何创建带有可选参数的构造函数?

我创建了一个类,并希望某些参数是可选的,但不知道该怎么做。

class PageAction {
  PageState state;
  PageConfiguration page;
  List<PageConfiguration> pages;
  Widget widget;

  PageAction({
    this.state = PageState.none,
    this.page, // Optional
    this.pages, // Optional
    this.widget, // Optional
  });
Run Code Online (Sandbox Code Playgroud)

我收到添加“必需”的建议,但这不是我需要的。有人可以帮忙解释一下吗?

constructor optional-parameters flutter flutter-navigation dart-null-safety

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

Flutter GetX 将数据传递到另一个页面

我有一个 flutter 应用程序,可以使用屏幕中的文本表单字段捕获数据。我有第二个屏幕,我想在其中显示从第一个屏幕的文本表单字段捕获的数据。

但首先我想从第二个屏幕控制器将其打印到终端,并查看已传递的内容。我尝试使用 GetX naviagtion 并传递,但出现此错误

The method '[]' was called on null.
Receiver: null
Tried calling: [](0)
Run Code Online (Sandbox Code Playgroud)

这是我用来获取数据作为输入的文本表单字段

TextFormField(
                      controller: controller._phoneNumberController,
                      keyboardType: TextInputType.text,
                      validator: (value) => validatePhoneNumber(value!),
                      style: TextStyle(
                        color: accentColor,
                        fontSize: 15,
                        fontFamily: 'PoppinsRegular',
                      ),
                      decoration: InputDecoration(
                        hintText: "Phone Number",
                        hintStyle: TextStyle(
                            fontSize: 14,
                            color: Colors.black45,
                            fontWeight: FontWeight.w500),
                        fillColor: Color(0xffEBEDF4),
                        filled: true,
                        border: InputBorder.none,
                        focusedBorder: OutlineInputBorder(
                          borderRadius: BorderRadius.circular(8.0),
                          borderSide: BorderSide(
                            color: Color(0xff1D275C),
                          ),
                        ),
                        enabledBorder: OutlineInputBorder(
                          borderRadius: BorderRadius.circular(8.0),
                          borderSide: BorderSide(
                            color: formFieldColor,
                            width: 2.0,
                          ),
                        ),
                      ), …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-navigation flutter-routes flutter-getx

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

Flutter:动态初始路由

亲爱的,

我正在使用provider dart 包,它允许侦听器获得有关模型本身更改的通知。

我能够检测到我的主应用程序根树中的更改,并且还能够更改初始路由的字符串值,但是我的屏幕没有更新。请参阅下面的代码片段和注释行:

  void main() => runApp(_MyAppMain());

    class _MyAppMain extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MultiProvider(
          providers: [
            ChangeNotifierProvider<UserProvider>.value(
              value: UserProvider(),
            ),
            ChangeNotifierProvider<PhoneProvider>.value(
              value: PhoneProvider(),
            )
          ],
          child: Consumer<UserProvider>(
            builder: (BuildContext context, userProvider, _) {
              return FutureBuilder(
                future: userProvider.getUser(),
                builder: (BuildContext context, AsyncSnapshot<User> snapshot) {
                  if (!snapshot.hasData) {
                    return Center(
                      child: CircularProgressIndicator(),
                    );
                  }

                  final User user = snapshot.data;

                  String initialScreen = LoginScreen.path;

    // (1) I am able to get into the condition

                  if …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-navigation

0
推荐指数
1
解决办法
2798
查看次数

Flutter Navigator.popUntil 断言 _debugLocked 失败。怎么了?

^ ^ ^^ ^ 不!这个问题没有答案!^ ^ ^ ^ ^ ^

我有问题Navigator.popUntil。我写了一个小演示应用程序来展示发生了什么。在我将此作为错误发布之前,我使用popUntil错了吗?

调用 popUntil 显示

在此处输入图片说明

看起来有些东西正在锁定导航器(设置_debugLocked)而不是释放它。

main.dart 下面:(可以直接粘贴到 Flutter 演示应用程序中)

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Routing Test Page'),
      onGenerateRoute: (RouteSettings settings) {
        switch (settings.name) {
          case '/':
            return MaterialPageRoute(
              builder: (_) …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-navigation

0
推荐指数
1
解决办法
6106
查看次数