抽屉颤振中的容器动力学

时间:2019-06-01 23:36:58

标签: flutter dart flutter-layout

我正在尝试创建页面以放入抽屉的body属性中,该属性等于本机android的片段。 我想将容器放在dart文件中,以便每个容器都有其自己的生命周期。 我在一些教程中看到过,人们将容器放在抽屉自己的文件中,这不是我的意图。

这是我需要帮助的代码示例。

dashboard_view.dart

Timer timer = new Timer
{
    Interval = 2000
};
timer.Enabled = true;
timer.Elapsed += new ElapsedEventHandler(OnTimerEvent);


private static void OnTimerEvent(object sender, EventArgs e)
{
    //your process
}

conference_view.dart

class Dashboard extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: AppStyles.lightTheme(),
      home: DashboardView(),
      onGenerateRoute: AppRoutes().getRoutes,
    );
  }
}

class DashboardView extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => DashboardState();
}

class DashboardState extends State<DashboardView> {
  String page = AppRoutes.APP_ROUTE_CONFERENCE;

  Widget _selectPage(BuildContext context, String page) {
    if (page == "/conference") {
      Navigator.of(context).pushNamed(page);
    } else {
      return Container(child: Text("Dashboard"));
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(APPStrings.APP_NAME),
          elevation:
              defaultTargetPlatform == TargetPlatform.android ? 5.0 : 0.0,
        ),
        drawer: Drawer(
          child: ListView(
            children: <Widget>[
              UserAccountsDrawerHeader(
                accountName: Text(APPStrings.MOCK_NAME),
                accountEmail: Text(APPStrings.MOCK_MAIL),
                currentAccountPicture: CircleAvatar(
                  backgroundColor: Theme.of(context).primaryColor,
                  child: Text(APPStrings.MOCK_SINGLE_NAME),
                ),
              ),
              ListTile(
                title: Text(APPStrings.CONFERENCE_INVOICE),
                trailing: Icon(Icons.check_circle),
                onTap: () =>
                    _selectPage(context, AppRoutes.APP_ROUTE_CONFERENCE),
              )
            ],
          ),
        ),
        body: _selectPage(context, AppRoutes.APP_ROUTE_DASHBOARD));
  }
}

app_routes.dart

class Conference extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: AppStyles.lightTheme(),
      home: ConferenceView(),
      onGenerateRoute: AppRoutes().getRoutes,
    );
  }
}

class ConferenceView extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => ConferenceState();
}

class ConferenceState extends State<ConferenceView> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Center(
        child: Text(APPStrings.CONFERENCE),
      ),
    );
  }
}

app.dart

class AppRoutes {
  static const String APP_ROUTE_LOGIN = "/login";
  static const String APP_ROUTE_DASHBOARD = "/dashboard";
  static const String APP_ROUTE_CONFERENCE = "/conference";

  Route getRoutes(RouteSettings routeSettings) {
    switch (routeSettings.name) {
      case APP_ROUTE_DASHBOARD:
        {
          return MaterialPageRoute<void>(
            settings: routeSettings,
            builder: (BuildContext context) => Dashboard(),
          );
        }

      case APP_ROUTE_CONFERENCE:
        {
          return MaterialPageRoute(
            settings: routeSettings,
            builder: (BuildContext context) => Conference(),
          );
        }
        break;
      default:
        return MaterialPageRoute<void>(
          settings: routeSettings,
          builder: (BuildContext context) => Dashboard(),
        );
    }
  }
}

0 个答案:

没有答案