【问题标题】:flutter app name doesn't show when see opened apps看到打开的应用程序时不显示颤振应用程序名称
【发布时间】:2020-10-07 06:20:55
【问题描述】:

我有我的应用程序,我已经更改了它的名称并正确显示,但是当您在手机上看到打开的应用程序时,该应用程序没有名称,但是当您在应用程序列表中看到它的图标显示正确时,您就会明白来自图片

在 5 种不同的设备上测试

应用列表中的应用图标(显示正确)

查看打开的应用时的应用名称

我不知道为什么会这样,我会和你分享我的清单,请告诉我如何解决这个问题

这是 AndroidManifest.xml

    package="com.eco.cat">
    <!-- io.flutter.app.FlutterApplication is an android.app.Application that
         calls FlutterMain.startInitialization(this); in its onCreate method.
         In most cases you can leave this as-is, but you if you want to provide
         additional functionality it is fine to subclass or reimplement
         FlutterApplication and put your custom class here. -->
    <application
        android:name="io.flutter.app.FlutterApplication"
        android:label="EcoCat"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <!-- Don't delete the meta-data below.
             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>

我的 main.dart

import 'Front-end/home/Companies.dart';
import 'Front-end/search/Search.dart';
import 'Front-end/settings/Settings.dart';
import 'file:///D:/programming/Android_Development/Projects/coupon_app/lib/reusable_widgets/functions/Device_Information.dart';
import 'package:app/reusable_widgets/logic/Check_SiteStatus.dart';
import 'package:app/reusable_widgets/logic/Responsiveness-Controller.dart';
import 'package:curved_navigation_bar/curved_navigation_bar.dart';
import 'package:flutter/material.dart';
import 'package:flutter_phoenix/flutter_phoenix.dart';
import 'package:provider/provider.dart';
import 'Themes/DarkThemeProvider.dart';
import 'Themes/DarkThemeStyle.dart';
import 'package:flutter/services.dart';

    void main() {
      WidgetsFlutterBinding.ensureInitialized();
      SystemChrome.setPreferredOrientations(
    [DeviceOrientation.portraitUp , DeviceOrientation.portraitDown])
      .then((_) => runApp(
    Phoenix(
      child: MyApp(),
     ),
    ),
  );
}

class MyApp extends StatefulWidget {
  // This widget is the root of your application.
  @override
  _MyAppState createState() => _MyAppState();
}


class _MyAppState extends State<MyApp> {
  DarkThemeProvider themeChangeProvider = new DarkThemeProvider();
  @override

  void initState() {
    super.initState();
    getCurrentAppTheme();
  }

  void getCurrentAppTheme() async {
    themeChangeProvider.darkTheme =
    await themeChangeProvider.darkThemePreference.getTheme();
  }

  Widget build(BuildContext context) {
    return
      ChangeNotifierProvider(
        create: (_) {
          return themeChangeProvider;
        },
        child: Consumer<DarkThemeProvider>(
          builder: (BuildContext context, value, Widget child) {
            return MaterialApp(
              debugShowCheckedModeBanner: false,
              theme: Styles.themeData(themeChangeProvider.darkTheme, context),
              home: MyHomePage(),
            );
          },
        ),
      );
  }
}



class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  //bottom navbar items to build body
  int _currentIndex = 1;
  final List<Widget> _children = [
    Search(),
    CompaniesPage(),
    Settings(),
  ];
  @override
  Widget build(BuildContext context) {
    //checks web server status
    checkSiteStatus(context);
    Color themeColor = Theme.of(context).backgroundColor;
    void changePage(int index){
      setState(() {
        _currentIndex = index;
      });
    }
    //setting app name based on current page
    String title = '';
    if(_currentIndex == 0){
      title = 'ابحث باستخدام التصنيفات';
    }else if(_currentIndex == 1){
      title = 'الشركات';
    }else if(_currentIndex == 2){
      title = 'الاعدادات';
    }
    return Scaffold(
      appBar: AppBar(
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        bottomOpacity: 0.0,
        elevation: 0.0,
        title: new Center(
          child: Text('$title',
            style: TextStyle(color: Colors.white ,
            fontSize: DeviceInformation(context).width *  ResponsivenessController(context).responsiveFont
            ),
          ),
        ),
      ),
      body: _children[_currentIndex],
      bottomNavigationBar: CurvedNavigationBar(
        index: _currentIndex,
        color: themeColor,
        backgroundColor: Colors.cyan,
        height: 75.0,
        items:<Widget>[
          Icon(Icons.search, size: DeviceInformation(context).height * ResponsivenessController(context).responsiveNavIcons),
          Icon(Icons.home, size: DeviceInformation(context).height * ResponsivenessController(context).responsiveNavIcons),
          Icon(Icons.settings, size: DeviceInformation(context).height * ResponsivenessController(context).responsiveNavIcons),
        ],
        onTap: changePage,
      ),
    );
  }
}

【问题讨论】:

  • 是android\app\src\main\AndroidManifest.xml中的manifest文件吗?
  • 是的,AndroidManifest 对不起,之前没有解释过
  • 好的,我刚刚回答了这个问题,解释了为什么没有显示标题并提供了官方文档的链接

标签: flutter build production


【解决方案1】:

MaterialApp是使用 Material design 的 Flutter 应用程序的入口点,因此它只能在 MyApp 小部件中声明一次。它的文档是here

如文档中所述,MaterialApp 的title 属性是查看打开的应用程序时的属性。 AndroidManifest 中的android:label 是主屏幕上显示的标题。

您应该使用以下代码设置标题

return MaterialApp(
  debugShowCheckedModeBanner: false,
  theme: Styles.themeData(themeChangeProvider.darkTheme, context),
  home: MyHomePage(),
  title: "EcoCat",
);

【讨论】:

  • 你应该得到 50 声望。恭喜,我有一个问题,但我应该如何将颜色设置为白色而不是黑色?
  • 我会在 29 分钟内给你声誉,这只是 stackoverflow 的政策
  • @感谢您的声誉。我不相信您可以明确更改标题颜色。它的颜色始终与主题中的主要颜色形成对比。如果我确实找到了改变它的方法,我会告诉你的。
【解决方案2】:

使用 MaterialApp 并为其设置标题。像这样:

import 'package:flutter/material.dart';

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Your_App_Name',
      home: DashboardPage(),
    );
  }
}

【讨论】:

  • 请分享一些代码或文档MaterialApp在flutter中随处使用你说的一般请更具体
  • MaterialApp(title: 'Your_App_Name',) 就是这样。
  • 注意:这不是 AppBar() 我已经设置了 AppBar 这会在打开的应用程序列表中显示应用程序我将编辑我的图像以获得更多说明
【解决方案3】:
Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Home sweet home"),
        ),
      body: Home(),
      );

你最好检查appbar你是否已经有一个标题。并且可能title 也会从main.dart 中丢失

【讨论】:

  • 正如我向 dev001 提到的,我的应用栏有一个标题,我将分享我的代码以获得更多说明
  • 为什么不给body加一些padding看看。
猜你喜欢
  • 2021-04-05
  • 2020-01-26
  • 2019-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 2020-12-18
  • 2020-10-29
相关资源
最近更新 更多